多进程、多线程、多核CPU——(I)

前言

在介绍多线程时,首先分析进程、以及多道程序设计模型。进程是操作系统中最重要的抽象概念之一,使得在即使只有一个CPU的机器上,也支持(伪)并发,即将一个单独的CPU变成多个虚拟的CPU。

多道程序设计

在进程执行过程中常常会因为资源请求或者IO被阻塞或中断(有的请求或者中断需要处理很长时间),此时CPU便空闲出来,众所周知,CPU是计算机中非常宝贵的资源,为提高其利用率,操作系统需通过进程切换,将CPU交给就绪队列的某个进程使用;等上次被阻塞或者中端的进程再次满足执行条件(一般是请求的资源得到满足或者IO完成等)后,操作系统便通过调度算法将CPU再次交给该进程执行任务,其中操作系统的进程调度算法有多种(例如在交互式系统(windows)中的进程调度算法有时间片轮转调度、优先级调度、多级队列调度等,这些相信大家都很熟悉了,此处不再进一步阐述),具体选择依赖操作系统。这时从用户的角度感觉是多个进程在同时执行,这的易于操作系统通过进程调度将一个cpu变成多个虚拟的CPU,实现多个进程的伪并发。在《现在操作系统》中将这种进程间的切换称之为“多道程序设计”。

进程切换:由于每个进程的处理任务异样性,其进程的输入、输出、处理过程、处理状态的都不同,那在进程切换的过程中是否也应该考虑这些参数呢?答案是肯定的。一个正在执行的进程包括程序计数器、寄存器、变量的当前值等,而这些数据都是保存在CPU的寄存器中的,且这些寄存器只能是正在使用CPU的进程才能享用,所以在进程切换时,首先得保存上一个进程的这些数据(便于下次获得CPU的使用权时从上次的中断处开始继续顺序执行,而不是返回到进程开始,否则每次进程重新获得CPU时所处理的任务都是上一次的重复,可能永远也到不了进程的结束出,因为一个进程几乎不可能执行完所有任务后才释放CPU),然后将本次获得CPU的进程的这些数据装入CPU的寄存器从上次断点处继续执行剩下的任务。操作系统为了便于管理系统内部进程,为每个进程创建了一张进程表项,如表1所示。

 

进程管理

存储管理

文件管理

寄存器

正文段指针

根目录

程序计数器

数据段指针

工作目录

程序状态字

堆栈指针

文件描述符

堆栈指针

 

用户ID

进程状态

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值