浅析操作系统----3、进程与线程

一、进程的定义

         一个进程就是一个正在执行程序的实例,由控制线程和地址空间组成。控制线程包括运行代码、数据段和堆栈段,地址空间就是一个进程所能访问到的内存地址的集合。为了方便管理,操作系统往往将一个进程用一个结构描述,有关进程的所有信息都放在这个结构里。例如在Linux系统里的,这样的结构就是task_struct。这个结构通常很大,因为进程的所有信息都在这个结构里,包括状态、性质、资源、和组织等几大类。通常情况下访问一个进程就是访问这一个结构体。例如要知道一个进程的运行状态就可以读取其中关于状态的成员。

二、多道程序设计

        所谓多道程序设计是指:内存中同一时间里存在多个程序,CPU通过在各个程序间快速切换以达到同时运行的效果。

三、进程的创建

       无论进程是谁何时何地创建的,其本质都是:由一个已经存在的进程通过调用创建进程的系统调用创建的。而在Linux 系统中,“创建”意味着复制,复制已有的进程的地址空间,然后修改一部分内容(如PID、父进程的PID等)就成为一个全新的进程。

四、进程的终止

       进程的终止分为正常终止和异常终止。

       正常终止:1)、进程运行结束,遇到exit()函数或者在main函数里调用return,后者虽然没有直接调用exit函                                    数,但是gcc编译器会在其代码最后加上exit函数。

                        2)、程序在运行时出现错误,引起其功能没能正常执行,如执行:gcc foo.c,gcc发现foo.c 不存                                    在,进程便终止,这种中指方式仍属于正常终止。

       异常终止:1)、执行了程序中的错误指令,如执行非法指令、访问非法地址等,进程会终止。

                        2)、被其他进程”杀死“,如Linux系统中,一个进程可以向其他进程发出kill信号,内核会将相应的进程终止。

五、进程的层次结构

       进程是有一定的层次结构的,当父进程创建了子进程以后,子进程便会和父进程共同存在,此时子进程再创建其他子进程,形成子子孙孙的结构。例如在Linux系统中,一个特殊的进程init(PID=0) 被内核创建,当init进程被创建以后,它便开始创建一系列的进程完成对系统的初始化。init 进程读入一个说明终端数量的文件,然后为每个终端创建一个新的进程,这些进程等待用户登入,一旦某个终端有用户登录,该登录进程就启动一个shell,读取shell 启动脚本,这些脚本里的每条命令都会使得shell创建一个进程,并执行该命令。这样就形成了以init 为树根的树状进程结构,我怕们称之为“进程树”



======待续=========





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值