中国高校课件下载中心 》 教学资源 》 大学文库

《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第三章 进程

文档信息
资源类别:文库
文档格式:PPT
文档页数:41
文件大小:813KB
团购合买:点击进入团购
内容简介
《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第三章 进程
刷新页面文档预览

第三章进程进程介绍进程控制块进程的组织方式进程调度进程的创建与进程相关的系统调用及其应用与调度相关的系统调用及应用

第三章 进程 进程介绍 进程控制块 进程的组织方式 进程调度 进程的创建 与进程相关的系统调用及其应用 与调度相关的系统调用及应用

进程介绍一程序和进程正文段(存放被执行的机器指令)程序进程用户数据段系统数据段

进程介绍-程序和进程

进程介绍一进程层次结构iniB上

进程介绍-进程层次结构 ini t A B C D E

进程介绍一进程状态运行态①?阻塞态就绪态

进程介绍-进程状态    运行态 阻塞态 就绪态

进程介绍一进程示例#include/*提供类型pid_t的定义,在PC机上与int型相同 *//*提供系统调用的定义*/#include main()tpid_t pid;/*此时仅有一个进程*/printf("PID before fork():%din",(int)getpid());pid-forkO;/*此时已经有两个进程在同时运行*/if(pid<0)printf("errorin fork!");else if(pid--0)printf("Iam the child process, my process ID is %dn",getpidO);elseprintf("Iam the parent process, my process ID is %din",getpidO);1

进程介绍-进程示例 #include /* 提供类型pid_t的定义,在PC机上与int型 相同 */ #include /* 提供系统调用的定义 */ main() { pid_t pid; /*此时仅有一个进程*/ printf(“PID before fork():%d\n”,(int)getpid()); pid=fork(); /*此时已经有两个进程在同时运行*/ if(pid<0) printf("error in fork!"); else if(pid==0) printf("I am the child process, my process ID is %d\n",getpid()); else printf("I am the parent process, my process ID is %d\n",getpid()); }

进程介绍一进程示例编译并运行这个程序:Sgcc fork test.c -o fork testS./fork testPID before forkO: 1991I am the parent process, my process ID is 1991I am the child process, my process ID is 1992再运行一遍,输出结果可能不同读者考虑一下为什么?

进程介绍-进程示例 编译并运行这个程序: $gcc fork_test.c -o fork_test $./fork_test PID before fork():1991 I am the parent process, my process ID is 1991 I am the child process, my process ID is 1992 再运行一遍,输出结果可能不同。 读者考虑一下为什么?

进程控制块★对进程进行全面描述的数据结构Linux中把对进程的描述结构叫做task_struct:struct task_struct {.M★传统上,这样的数据结构被叫做进程控制块PCB (process control blaock)

进程控制块 对进程进行全面描述的数据结构 Linux中把对进程的描述结构叫做task_struct: struct task_struct { . . } 传统上,这样的数据结构被叫做进程控制块 PCB(process control blaock)

进程控制块一信息分类★状态信息一描述进程动态的变化。★链接信息一描述进程的父/子关系。★各种标识符一用简单数字对进程进行标识。★进程间通信信息一描述多个进程在同一任务上协作工作。★时间和定时器信息一描述进程在生存周期内使用CPU时间的统计、计费等信息。★调度信息一描述进程优先级、调度策略等信息。★文件系统信息一对进程使用文件情况进行记录。★虚拟内存信息一描述每个进程拥有的地址空间。★处理器环境信息一描述进程的执行环境(处理器的寄存器及堆栈等)

进程控制块-信息分类 状态信息-描述进程动态的变化。 链接信息-描述进程的父/子关系。 各种标识符-用简单数字对进程进行标识。 进程间通信信息-描述多个进程在同一任务上协作工作。 时间和定时器信息-描述进程在生存周期内使用CPU时间的 统计、计费等信息。 调度信息-描述进程优先级、调度策略等信息。 文件系统信息-对进程使用文件情况进行记录。 虚拟内存信息-描述每个进程拥有的地址空间。 处理器环境信息-描述进程的执行环境(处理器的寄存器及 堆栈等)

进程控制块一Linux进程状态及转换fork()资源到位wake_up_interruptible()收到信号SIGCONTwake_up()或收到信号wake_up()TASK RUNNING就绪资源到位wake_up()TASKINTERRUPTIBLschedule()时间片耗尽浅度睡眠TASK UNINTERRUPTIBLE深度睡眠占有CPU等待资源到位等待资源到位执行interruptible_sleep_on()sleep_on()schedule()schedule()schedule()ptrace()do_exit()TASK_STOPPEDTASK ZOMBIE暂停僵死

进程控制块-Linux进程状态及转换 fork() TASK_RUNNING 就绪 TASK_INTERRUPTIBLE 浅度睡眠 TASK_UNINTERRUPTIBLE 深度睡眠 TASK_STOPPED 暂停 TASK_ZOMBIE 僵死 占有CPU 执行 do_exit() schedule() ptrace() schedule() 时间片耗尽 等待资源到位 sleep_on() schedule() 等待资源到位 interruptible_sleep_on() schedule() 资源到位 wake_up_interruptible() 或收到信号 wake_up() 资源到位 wake_up() 收到信号SIGCONT wake_up()

进程控制块一进程标识符★每个进程都有一个唯一的标识符,内核通过这个标识符来识别不同的进程。心进程标识符PID也是内核提供给用户程序的接口,用户程序通过PID对进程发号施令心PID是32位的无符号整数,它被顺序编号★每个进程都属于某个用户组。task_struct结构中定义有用户标识符UID(UserIdentifier)和组标识符GID(GroupIdentifier)这两种标识符用于系统的安全控制系统通过这两种标识符控制进程对系统中文件和设备的访问

进程控制块-进程标识符 每个进程都有一个唯一的标识符,内核通过 这个标识符来识别不同的进程 。 ❖进程标识符PID也是内核提供给用户程序的接口, 用户程序通过PID对进程发号施令 。 ❖PID是32位的无符号整数,它被顺序编号 每个进程都属于某个用户组。 ❖task_struct结构中定义有用户标识符UID(User Identifier)和组标识符GID(Group Identifier) ❖这两种标识符用于系统的安全控制 ❖系统通过这两种标识符控制进程对系统中文件和 设备的访问

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档