操作系统 引论和进程

1. 引论

操作系统(Operation System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。

其主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并为用户和应用程序提供了一个简单的接口,便于用户使用。

目标

  • 方便性:配置了OS,系统便可以使用编译命令将用户采用高级语言书写的程序翻译成机器代码,或者直接通过OS提供的命令来操纵计算机系统
  • 有效性:提高系统资源的利用率,提高系统的吞吐量
  • 可扩充性:即能方便地增添新的功能和模块,以及对原有的功能和模块进行修改
  • 开放性:指系统能遵循国际标准规范,可以彼此兼容

作用

  • OS作为用户与计算机硬件系统之间的接口
  • OS作为计算机系统资源的管理者
  • OS实现了对计算机资源的抽象

发展历程

  • 未配置操作系统的计算机系统

  • 单道批处理系统

  • 多道批处理系统(MultiProgrammed Batch Processing System)

  • 分时系统(Time Sharing System):引入了时间片的概念,一个时间片是一段很短的时间,每个作业每次只能运行一个时间片,然后就暂停并立即调度下一个作业运行

  • 实时系统(Real Time System):指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行

    • 非周期任务的开始截止时间概念:指某任务在某时间以前必须开始执行
    • 非周期任务的完成截止时间概念:指某任务在某时间以前必须完成

2. 进程的描述与控制

进程的定义

为了使参与并发执行的每个程序(含数据)都能独立地运行,操作系统配置了一个专门的数据结构,称为进程控制块(Process Control Block,PCB)。

系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。由程序段相关的数据段PCB三部分便构成了进程实体。

引入PCB后,进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程的特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性

进程的基本状态

  • 就绪(Ready)状态:指进程已处于准备好运行的状态。
  • 执行(Running)状态:进程已获得CPU,其程序正在执行的状态。
  • 阻塞(Block)状态:指正在执行的进程由于发生某事件(如I/O请求,申请缓冲区失败等)暂时无法继续执行的状态。

所以进程只能从阻塞到就绪,执行到阻塞,相反则不行

进程同步

概念

临界资源(Critical Resource):一次仅允许一个进程使用的资源,如打印机等。

临界区(Critical Section):每个进程中访问临界资源的代码。

同步机制规则

  • 空闲让进:对于没有进程进入临界区进行访问时,应当允许有进入临界区请求的进程进入,对临界资源访问,提高该资源的利用率;
  • 忙则等待:当有进程对临界区进行访问时,其他想进入临界区进行访问的进程必须等待,以保证临界资源的互斥访问。
  • 有限等待:对于想访问临界资源的进程,必须保证他在有限时间内能进入临界区进行访问,以避免进程处于死等状态。
  • 让权等待:当进程无法进入临界区进行访问时,应当放弃处理机的使用权,以避免进程处于忙等状态。

硬件同步机制

1.关中断

2.利用 Test-and-Set 指令实现互斥

3.利用 Swap 指令实现进程互斥

信号量(Semaphores)机制

1.整型信号量

由 Dijkstra 把整型信号量定义为一个用于表示资源数目的整型量 S,它与一般整型量不同,除初始化外,仅能通过两个标准的原子操作(Atomic Operation)wait(S)signal(S)来访问。这两个操作被称为 P、V 操作。wait、signal 操作可描述如下:

wait(S){
    while(S<=0); /*do no-op*/
    S--;
}
signal(S){
    S++;
}

举个栗子:

桌上有一空盘,最多允许存放一个水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。(提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果。)

semaphore s=1,orange=0,apple=0;
父亲:
    p(s);
    if(放苹果)v(apple);
    else if(放桔子)v(orange);
儿子:
    p(orange);
    v(s);
女儿:
    p(apple);
    v(s);

2.记录型信号量

3.AND 型信号量

4.信号量集

管程机制

进程通信

进程通信是指进程之间的信息交换。由于进程的互斥和同步,比如 P、V 操作,需要在进程间交换一定的信息,但只能是低级进程通信。在进程之间要传送大量数据时,利用 OS 提供的高级通信工具。高级通信机制可归结为四大类:

  • 共享存储器系统(Shared-Memory System)
  • 管道(pipe)通信系统:用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名 pipe 文件。管道机制提供以下三方面的协调能力
    • 互斥
    • 同步
    • 确定对方是否存在着
  • 消息传递系统(Message passing System):通过格式化的消息(message),将数据封装在其中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。
    • 直接通信方式:直接通过OS的发送、接收原语
    • 间接通信方式
  • 客户机-服务器系统(Client-Server System)

线程

传统OS中,进程在每次调度时,都需要进行上下文的切换,开销较大,所以引入了线程的概念。

线程是进程的执行单元,而进程相当于线程的容器。一个进程中可以包含若干个线程,并且至少拥有一个线程

线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位

特点

  1. 执行的基本单位
  2. 并发性
  3. 拥有少量资源
  4. 独立性
  5. 系统开销小
  6. 支持多处理机系统

线程的实现方式

  1. 内核支持线程 KST(Kernel Supported Threads):无论是系统进程还是用户进程,都是在操作系统内核的支持下运行的,和内核紧密相关的。
  2. 用户级线程 ULT(User Level Threads):用户级线程是在用户空间中实现的, 无需内核的支持。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37138933/article/details/80954394
文章标签: OS
个人分类: OS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭