第二章 进程的描述与控制(控制与同步)

进程控制的基本过程:
○进程的创建
○进程的终止
○进程的阻塞与唤醒
○进程的挂起和激活
进程树示例:
在这里插入图片描述
1.进程的创建
1)一个进程创建另一进程的事件(原因)
用户登录:分时情况下用户的请求
作业调度:批处理中
提供服务:运行中的用户程序提出功能请求,要创建服务进程(如打印服务)
应用请求:应用程序自己创建进程,完成特定功能的新进程。(木马程序)
2)创建过程
(1) 申请空白PCB
(2) 为新进程分配资源
主要是内存资源的处理
(3) 初始化进程控制块
标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
(4) 将新进程插入就绪队列

进程通信是指进程之间的信息交换
进程通信分两种:
低级进程通信,高级进程通信
低级通信——进程之间的互斥和同步

高级进程通信可分为四类:
①共享存储器系统(操作存储区方式)
a. 基于共享数据结构
b. 基于共享存储区
②消息传递系统(发–收方式)
③管道通信(中间文件方式)
④Client-Server system (c/s)

消息传递通信的实现方法

1) 直接通信方式
2)间接通信方式
3.消息传递系统的实现
①通信链路的建立
②消息格式
③同步方式

信号量机制的不足:
信号量的控制分布在多个进程中
正确性分析困难;
分散的P、V操作:易出错,使用不当可能导致死锁。
修改、维护困难:易读性差,任一修改都可能影响全局;测试期间发现错误困难,即使发现错误也不容易定位出错位置。
管程的组成
1.一组局部变量
2.对局部变量操作的一组过程
3.对局部变量进行初始化的语句。
线程的信息
状态参数
标识符、运行状态、优先级、寄存器状态、堆栈、专有存储器、信号屏蔽等。
运行状态
执行、就绪、阻塞

多线程OS中,一个进程包括多个线程,每个线程都是利用CPU的基本单位。

多线程的应用
一个应用程序有多个任务或功能需要同时进行处理,就最适合多线程机制。

编程举例
多线程编程过程是类似的:
可用win32 API编写C风格程序
C的main既是规定了主线程的代码。启动程序时,系统根据main地址,启动主线程。
在主线程代码某处利用线程创建函数即可创建线程;给创建函数编写线程功能代码;
利用其他一系列函数使系统管理多个线程。
也可用封装好的类库,如JAVA,MFC

线程与进程的比较
调度:线程作为CPU调度的基本单位,而进程只作为其它资源分配单位。
并发性:进程之间可以并发,实质上是不同进程中的两个线程并发。一个进程的多个线程之间亦可并发。
拥有资源:进程间资源相互独立;同一进程的各线程间共享。某进程内的线程在其它进程不可见
系统开销:线程上下文切换在同进程环境下上下文切换要快得多。因为同进程内线程间共享内存地址和打开的文件资源

线程的管理
同步和通信机制

1)互斥锁
比较简单的,控制线程互斥访问资源;
适用于高频度使用的关键共享数据和程序段;
unlock和lock两个锁操作原语;
2)条件变量
与互斥锁一起使用
锁保证互斥进入临界区,但利用条件变量使线程阻塞
注意不满足条件时,wait条件变量:
释放互斥锁
进程阻塞在条件变量指向队列中
被唤醒后要重新再设互斥锁
3)信号量
私用信号量(private samephore)
用于同进程的线程间同步,数据结构存放在应用程序的地址空间。属于特定进程,OS感知不到其存在。
公用信号量(public samephore)
用于不同进程间或不同进程中线程的同步,数据结构由OS管理,存放在受保护的系统存储区。

线程的实现方式
1.内核线程KST(kernel-level thread)
2.用户线程ULT(user-level thread)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值