操作系统

二、操作系统

操作系统

进程
进程的概念

一个进程是某种类型的一个活动,他有程序,输入,输出,以及状态。单个的处理器可以被若干个进程共享,他是用某种调度算法决定何时停止一个进程的工作,并准想另一个进程提供服务。cpu 的每个核每次只能运行一个进程。每个进程都有一个地址空间和一个控制线程

  • 进程的创建
  1. 系统初始化

  2. 正在运行的程序执行了创建进程的系统调用

  3. 用户请求创建一个新锦成

  4. 一个批处理作业的初始化

前台进程:和用户交互完成工作的进程。

后台进程:(守护进程,)一直在后台运行,在需要的时候被调用

  • 什么时候创建进程更加合适

当所要做的事很容易划分为

在unix中,只有一个系统调用(户系统内核交互的命令)fork可以创建新进程;fork后,这两个进程(父进程和子进程)会拥有相同的内存映像,同样的环境字符串和同样的打开文件。子进程执行execve或其他系统调用修改内存映像成为新程序。分为两步的原因是,在execve之前,允许孩子进程处理文件描述符。

在win中,创建新进程,父进程会通过传入参数将需要的信息传递给子进程来创建。

创建进程后父子进程地址空间是不同的。从上可见,unix初始创建进程时,字进程的初始的地址空间是父进程的一个副本,这种情况子进程共享父进程内存,但写操作会复制内存来进行操作。(写时复制

  • 进程的终止

自愿(正常退出和错误退出)和非自愿(严重错误和被其他进程杀死)

正常退出中,unix中调用exit,win调用exitprocess

  • 进程的状态

运行态(正在占用cpu运行),就绪态,阻塞态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AByLrizC-1609681368107)(evernotecid://997274DB-5796-41BC-8683-0CC751CD0C4B/appyinxiangcom/21253932/ENResource/p31)]

  • 进程的实现

实现进程模型是通过维护进程表(也叫进程控制块)来实现的(一个结构数组)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SChpacMM-1609681368111)(evernotecid://997274DB-5796-41BC-8683-0CC751CD0C4B/appyinxiangcom/21253932/ENResource/p32)]

进程间通信
  • 原因:竞争条件:在协作的过程中可能会共享一些彼此都能读写的公共存储区,当两个以上进程读写某些共享数据时,最后的结果取决于进程运行的精确时序,成为竞争条件,竞争条件的形成会使程序在运行中出现一些不可思议的错误。

  • 解决:为了保持进程间通信中避免产生竞争条件,就必须确保当一个进程正使用一个共享变量时,其他进程不能这么操作,即保证互斥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9kojFkDJ-1609681368115)(evernotecid://997274DB-5796-41BC-8683-0CC751CD0C4B/appyinxiangcom/21253932/ENResource/p49)]

保证互斥有以下不同的方案:

  • 忙等待互斥:
  1. 屏蔽中断:进程进入临界区之后立即屏蔽中断,并在离开之前再打开中断。缺点是:屏蔽中断对于操作系统是一种有用的技术,但对于用户进程掌握屏蔽中断并不安全也不适用

  2. 锁变量:设置一个共享锁,初值为0,进程进入临界区时先测试这把锁,为0则设为1 并使用;为1则不能使用。缺点:测试和设置有时间间隙,容易发生问题(参考数据库)

  3. 严格轮换法:

和2类似,但是是使用一个初值为0的变量,每个进程都循环获取该变量的值,当达到该进程想要的值时,该进程使用,使用后变量值+1。这种也成为自旋锁。缺点:进程0之外的进程因循环被阻塞

  1. peterson 解法:

同样使用变量记录临界区使用情况,但是同时获取临界区值时,后者会覆盖前者。

总结:可以看出忙等待互斥有一个特性就是,忙等待,即当一个进程想进入临界区时,先检查是否允许进入,若不允许,则原地等待,直到允许为止。我们希望进程无法进入临界区应该阻塞,而不是忙等待, 睡眠与唤醒:

生产者消费者问题,两个进程共享一个公共固定大小的缓冲区,其中一个是生产者将消息放入缓冲区,另一个是消费者,从缓冲区读取信息。但缓冲区满则生产者睡眠或者消息为空则消费者睡眠(s

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值