[计算机软件及应用]linux进程编程

[计算机软件及应用]linux进程编程

ID:40004872

大小:354.00 KB

页数:49页

时间:2019-07-17

[计算机软件及应用]linux进程编程_第1页
[计算机软件及应用]linux进程编程_第2页
[计算机软件及应用]linux进程编程_第3页
[计算机软件及应用]linux进程编程_第4页
[计算机软件及应用]linux进程编程_第5页
资源描述:

《[计算机软件及应用]linux进程编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux进程编程授课老师:张涛ztflash@163.com进程P242在操作系统中,各个程序之间是并发执行的,共享系统资源。CPU需要在各个运行的程序之间来回地切换,这样的话,要想描述这些并发活动过程就变得很困难。为此,操作系统设计者提出了进程的概念。什么是进程?P242Aprocess=aprograminexecution一个进程应该包括:程序的代码;程序的数据;PC中的值,用来指示下一条将运行的指令;一组通用的寄存器的当前值,堆、栈;一组系统资源(如打开的文件)总之,进程包含了正在运行的一个程序的所有 状态信息。进程状态的转换P242时间片轮转调度算

2、法P242在时间片轮转算法中,将所有的就绪任务按照FCFS(FirstComeFirstServed)原则,排成一个队列;每次调度时将处理器分派给队首任务,让其执行 一小段CPU时间(时间片,timeslice);在一个时间片结束时,如果任务还没有执行完的 话,将发生时钟中断,在时钟中断中,调度程序 将暂停当前任务的执行,并将其送到就绪队列的 末尾,然后执行当前的队首任务;开始时,任务B位于队列之首,因此被调度执行。当 它的时间片用完后,就把它送到就绪队列的末尾。 同时,任务F成为新的队首,被调度运行。抢占调度方式P242任务1任务2任务1优先级高低时间任务2

3、任务3表示抢占表示结束实际上创建进程就是给任务代码分配一个任务控制块。task_struct中有一个指针指向files_struct结构体,称为文件描述符表,其中每个表项包含一个指向已打开的文件的指针typedefstructos_tcb{OS_STK*OSTCBStkPtr;structos_tcb*OSTCBNext;INT16UID;进程IDINT8UOSTCBPrio;进程优先级filestruct}OS_TCB;任务等待的延迟时间(节拍数)任务控制块P242文件描述符表P242用户程序不能直接访问内核中的文件描述符表,而只能使用文件描述符表的索引(即

4、0、1、2、3这些数字),这些索引就称为文件描述符(FileDescriptor),用int型变量保存。当调用open打开一个文件或创建一个新文件时,内核分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。当读写文件时,用户程序把文件描述符传给read或write,内核根据文件描述符找到相应的表项,再通过表项中的指针找到相应的文件。进程与进程IDP245程序被执行的实例被称为进程,进程空间包括(代码空间、数据空间、运行的堆栈空间)存在与内存中。程序是静态的,存放在硬盘上,是永久的。进程是动态的,是暂时的,有其生命周期的。操作系统为其分

5、配好进程的空间时,从main函数开始运行时标志着进程的开始,当调用exit函数退出时标志着进程的结束。每个LINUX进程都有一个唯一的ID,进程ID总是一个非负数。getpid()getppid()进程的控制:fork、exec、waitpid。1、用户IDgetuid()2、组IDgetgid()用户标识P247出错处理P247当LINUX函数出错时,会给整型变量errno设置一个值,errno每一个值都有特定含义。strerror(i)将函数映射为一个出错信息字符串。perror(constcharmsg)在标准出错上产生一条出错信息(基于errno)Li

6、nux信号量?P249信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。Linux信号量?P2491、忽略该信号。2、按系统默认方式处理。3、提供一个函数,信号发生时则调用该函数。Linux时间值1、日历时间2、进程时间。时钟时间、用户CPU时间、系统CPU时间。$time./testreal0m0.06suser0m0.01sSys0m0.00s系统调用和库函数?P2501、系统调用:系统调用把应用程

7、序请求传给内核,调用相应的内核函数完成所需的处理。使应用程序由用户态进入核心态,系统调用有自己单独的堆栈空间。2、库函数:存放在函数库中的函数,库函数具有明确的功能、入口调用参数和返回值,Linux库函数特指函数入口没有进行系统调用的库函数。库函数中常包含系统调用,库函数没有进行系统调用时,没有单独的堆栈空间。printfwritestrcpyatoi用户空间系统调用库函数库函数用户代码内核系统空间用户进程3、用户态:进程的普通执行状态,只能执行规定的指令,不能执行特权指令。进程在用户态下只能访问该进程的存储空间,不能与系统硬件相互作用,不能访问系统资源,当

8、它需要系统硬件资源时,会通过系统调用进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。