操作系统知识点总结(1)

操作系统的目标和作用

操作系统的作用

  1. OS(操作系统,Operation System,OS)作为用户和计算机硬件系统之间的接口:OS处于用户和计算机硬件系统之间,用户通过OS来使用计算机系统。OS是一个系统软件,因此这种接口是软件接口

用户操纵计算机系统的方式:

  • 命令方式:指由OS提供了一组联机命令(语言),用户可通过键盘输入有关命令来直接操纵计算机系统
  • 系统调用方式:用户可在自己的应用程序中通过相应的系统调用,来操纵计算机
  • 图形、窗口方式:用户通过屏幕的图形化界面操纵操作系统
  1. OS是计算机系统资源的管理着
    计算机系统的资源可分为四类:处理器、存储器、I/O设备以及信息(数据和程序),OS的主要功能是对这四类资源进行有效管理

  2. OS用作扩充机器

操作系统的发展

无操作系统的计算机系统

  1. 人工操作方式
  2. 脱机输入/输出方式

单道批处理系统

单道批处理系统的处理过程:

该系统的主要特征:自动性、顺序性、单道性

多道批处理系统

在多道批处理系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为”后备队列”,然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。它的优点有:

  • 提高CPU的利用率
  • 提高内存和I/O设备利用率
  • 增加系统吞吐量
    多道批处理系统的特征:多道性、无序性、调度性

注:作业是计算机操作者交给操作系统的执行单位(包括程序、相应的数据和作业说明书)

分时系统

分时(Time-Sharing):多个用户分享同一台计算机
分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。

实时系统

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

实时任务
  1. 按任务执行时是否呈现周期性来划分
  • 周期性实时任务
  • 非周期性实时任务
  1. 根据对截止时间的要求来划分:
  • 硬实时任务:系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果
  • 软实时任务:它联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不大。

操作系统的基本特性

并发(Concurrence)

  • 并行性:两个或多个事件在同一时刻发生
  • 并发性:两个或多个事件在同一时间间隔内发生
    在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行。故微观上这些程序只能是分时地交替执行。倘若计算机系统有多个处理机,这些并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序。

共享

在OS中,共享是指系统中的资源可供内存中多个并发执行的进程(线程)共同使用。主要有两种资源共享方式:

  • 互斥共享方式:仅当A进程访问完并释放该资源后,才允许另一进程对该资源进行访问。
  • 同时访问方式:“同时”往往是宏观上的,在微观上,这些进程可能是交替地对该资源进行访问。

虚拟

OS的虚拟,是指通过某种技术把一个物理实体变为若干个逻辑上的对应物。OS中利用了多种虚拟技术,分别用来实现虚拟处理机、虚拟内存、虚拟外部设备和虚拟信道等

异步性

OS的异步性是指进程以人们不可预知的速度向前推进。

操作系统的主要功能

处理机管理功能

进程控制

在传统的多道程序环境下,要使作业运行,必须先为它创建一个或几个进程,并为之分配必要的资源。当进程结束时,立即撤销该进程,以便能及时回收该进程所占用的各类资源。进程控制的主要功能是:

  • 为作业创建进程
  • 撤销已结束的进程
  • 控制进程在运行过程中的状态转换
  • 为一个进程创建若干个线程、撤销已完成任务的线程的功能
进程同步

进程同步的主要任务是为多个进程(含线程)的运行进行协调。有两种协调方式:

  • 进程互斥方式:指进程(线程)在对临界资源进行访问时,应采用互斥方式
  • 进程同步方式:指在互相合作区完成共同任务的进程(线程)间,由同步机构对它们的执行次序加以协调

最简单的用于实现进程互斥的机制,是为每一个临界资源配置一把锁W,当锁打开时,进程(线程)可以对该临界资源进行访问,当锁关上时,则禁止进程(线程)访问该临界资源。

进程通信

当互相合作的进程(线程)处于同一计算机系统时,通常采用直接通信方式,即由源进程利用发送命令直接将消息挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。

临界资源:是指一次只能被一个进程所占用的资源

调度

在后备队列上等待的每个作业,通常都要经过调度才能执行。在传统OS上,包括作业调度和进程调度两步。

  • 作业调度:从后备队列中按照一定的算法,选择出若干个作业,为它们分配其必需的资源(首先是分配内存)。在将它们调入内存后,便分别为它们建立进程,使它们都成为可能获得处理机的就绪进程,并按照一定的算法将它们插入就绪队列
  • 进程调度:从进程的就绪队列中选出一个新进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。

注:在多线程OS中,通常把线程作为独立运行和分配处理机的基本单位。为此,须把就绪线程排成一个队列,每次调度时,是从就绪线程队列中选出一个线程,把处理机分配给它

存储器管理功能

内存分配

OS在实现内存分配时,可采取静态和动态两种方式:

  • 在静态分配方式中,每个作业的内存空间是在作业装入时确定的,在作业装入后的整个运行期间,不允许该作业再申请新的内存空间,也不允许作业在内存中”移动”
  • 在动态分配方式中,每个作业所要求的基本内存空间,也是在装入时确定的,但允许作业在运行过程中,继续申请新的附加内存空间,以适应程序和数据的动态增涨,也允许作业在内存中移动

为了实现内存分配,在内存分配的机制中应具有这样的结构和功能:

  • 内存分配数据结构,该结构用于记录内存空间的使用情况,作为内存分配的依据
  • 内存分配功能,系统按照一定的内存分配算法,为用户程序分配内存空间
  • 内存回收功能,系统对于用户不再需要的内存,通过用户的释放请求,去完成系统的回收功能
内存保护

内存保护的主要任务,是确保每道用户程序都只在自己的内存空间运行,彼此互不干扰。

内存保护机制:设置两个界限寄存器,分别存放在正在执行程序的上界和下界。系统必须对每条指令所要访问的地址进行检查,如果发生越界,便会发出越界中断请求,停止该程序的运行。(越界检查都由硬件实现,对越界后的处理,还须与软件配合实现)

地址映射

一个应用程序(源程序)经编译后,通过会形成若干个目标程序,这些目标程序再经过链接便形成了可装入程序。这些程序的地址都是从0开始的,程序中的其他地址都是相对于起始地址计算的,由这些地址所形成的地址范围成为“地址空间”,其中的地址称为“逻辑地址”或“相对地址”。此外,由内存中的一系列单元所限定的地址称为“内存空间”,其中的地址称为“物理地址”。

在多道程序环境下,每道程序不可能从‘0’地址开始装入内存,这就导致地址地址空间内的逻辑地址和内存空间中的物理地址不一致。为使程序能正确运行,存储器必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中对应的物理地址。

内存扩充

存储器管理中的内存扩充任务,并非是去扩大物理内存的容量,而是借助于虚拟存储技术,从逻辑上去扩充内存容量。使用户所感觉到的内存容量比实际内存容量大得多。为了能在逻辑上扩充内存,系统必须具有内存扩充机制,用于实现下述功能:

  • 请求调入功能
  • 置换功能

设备管理功能

设备管理用于管理计算机系统中所有的外围设备,设备管理的主要任务是:

  • 完成用户进程提出的I/O请求,为用户进程分配其所需的I/O设备,提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备
    为实现上述任务,设备管理应具有缓冲管理、设备分配和设备处理以及虚拟设备等功能
缓冲管理

CUP运行的高速性和I/O低速性间的矛盾。为了有效缓解这种矛盾,在I/O设备和CPU之间引入缓冲。

最常见的缓冲区机制有单缓冲机制、能实现双向同时传送数据的双缓冲机制,以及能供多个设备同时使用的公用缓冲池机制。

设备分配

设备分配的基本任务,是根据用户进程的I/O请求、系统的现有资源情况以及按照某种设备分配策略,为之分配其所需的设备。

设备处理

设备处理程序又称为设备驱动程序。其基本任务是用于实现CPU和设备控制器之间的通信,即由CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作

文件管理功能

文件存储空间的管理

由文件系统对诸多文件及文件的存储空间,实施统一的管理。其主要任务是为每个文件分配必要的外存空间,提高外存的利用率,并有助于提高文件系统的运行速度。

目录管理

为了使用户能方便地在外存上找到自己所需的文件,通常由系统为每个文件建立一个目录项。由若凡个目录项又可以构成一个目录文件。目录管理的主要任务。是为每个文件创立其目录项,并对目录项加以有效的组织,以实现方便的按名存取。
其次,目录管理还应能实现文件共享,这样,只需在外存上保留一份该共享文件的副本。

文件的读/写管理和保护
  • 文件的读/写管理:该功能是根据用户的请求,从外存中读取数据;或将数据写入外存。在进行文件读写时。系统现根据用户给出的文件名,去检索文件目录。从中获得文件在外存中的位置。然后,利用文件读写指针,对文件进行读写。一旦读写完成,便修改读写指针,为下一次读写做好准备。由于读写操作不会同时进行,故可合用一个读写指针。
  • 文件保护:防止未经批准的用户存取文件,防止冒名顶替存取文件,防止以不正确的方式使用文件

用户接口

命令接口
  • 联机用户接口:它由一组键盘操作命令及命令解释程序所组成。当用户在终端或控制台上每键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释并执行该命令。在完成指定功能后,控制又返回终端或控制台上,等待用户键入下一条命令。
  • 脱机用户接口:该接口由一组作业控制语言JCL组成。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预。用户用JCL把需要对作业进行的控制和干预,实现写在作业说明书上,然后将作业连同说明书一起提供给系统。当系统调度到该作业运行时,又调用命令解释程序,对作业说明书上的命令,逐条地解释执行。作业一直在作业说明书的控制下运行,直至遇到作业结束语句时,系统才停止该作业的运行
程序接口

该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径。它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务时,便调用具有相应共的系统调用。

图形接口

图形用户接口采用了图形化的操作界面。用户可用鼠标或通过菜单和对话框,来完成对应用程序和文件的操作

操作系统的结构设计

软件工程的基本概念

软件

软件是指在计算机运行时,能提供所要求的功能和性能的指令和程序的集合,该程序能够正确地处理信息的数据结构

软件工程

软件工程是指运用系统的、规范的和可定量的方法,来开发、运行和维护软件。

传统的操作系统结构

我们把第一代至第三代的OS结构,称为传统的OS结构,而把微内核的OS结构称为现代OS结构。

无结构操作系统

此时的OS是为数众多的一组过程的集合,各过程之间可以互相调用,在操作系统内部也不存在任何结构,因此,这种OS是无结构的,也被称为整体系统结构。

模块化OS结构

模块化结构:该技术是基于分解和模块化原则来控制大型软件的复杂度的。下图表示出了由模块、子模块等组成的模块化OS结构:

分层式OS结构
  • 有序分层的基本概念:每一层都仅使用其底层所提供的功能和服务,这样可使系统的调试和验证都变得容易。
  • 层次的设置:①程序嵌套②运行频率③公用模块④用户接口

微内核OS结构

客户-服务器模式
  1. 基本概念:将OS分为两部分:
  • 用于提供各种服务的一组服务器(进程),所有这些服务器都运行在用户态
  • 内核:用来处理客户和服务器之间的通信,即由内核来接收客户的请求,再将该请求送至相应的服务器;同时接收服务器的应答,并将此应答回送给请求客户。

下图是单机环境下的客户/服务器模式:

微内核技术
  1. 微内核技术的引入:微内核技术,是指精心设计的、能实现现代OS核心功能的小型内核。微内核不是一个完整的OS,而只是为构建通用OS提供的一个重要基础。
  2. 微内核的基本功能:进程管理、存储器管理、进程间通信、I/O设备管理

操作系统的体系架构

  • 内核态:cpu可以访问内存的所有数据
  • 用户态:只能受限的访问内存,且不允许访问外围设备
  • 目的:限制不同的程序之间的访问能力
  • 切换方式:系统调用

进程管理

进程的基本概念

进程的定义

  1. 进程是程序的一次执行
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  3. 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
    我们可以把传统OS中的进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程的特征

  1. 结构特征
  2. 动态性
  3. 并发性
  4. 独立性
  5. 异步性

进程的三种基本状态

  1. 就绪状态
  2. 执行状态
  3. 阻塞状态
    下图是三种基本状态及其转换:

挂起状态

引起挂起状态的原因
  • 终端用户的请求
  • 父进程的请求
  • 负荷调节的需要
  • 操作系统的需要
具有挂起状态的进程状态图

进程控制块

进程控制块的作用

进程控制块(Process Control Block,PCB)的作用是在使一个在多道程序环境下不能独立运行的程序,称为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。或者说OS是通过PCB对并发执行的进程进行控制和管理的。

进程控制块中的信息
  1. 进程标识符:用于唯一标识一个进程。一个进程通常有两种标识符:
  • 内部标识符:由操作系统创建,通常是一个进程的序号,方便系统使用
  • 外部标识符:由创建者提供,在用户(或进程)访问该进程时使用。
  1. 处理机状态
    处理机状态信息主要是由处理机的各种寄存器中的内容组成的:
  • 通用寄存器:用户程序可以访问,用于暂存信息。
  • 指令计数器:存放了要访问的一下条指令的地址
  • 程序状态字PSW:含有状态信息
  • 用户栈指针:指每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈的指针指向该栈的栈顶。
  1. 进程调度信息
    在PCB中还存放着与进程调度和进程对换有关的信息:
  • 进程状态:指明进程的当前状态,作为进程调度和对换时的依据
  • 进程优先级:用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应有限获得处理机。
  • 进程调度所需的其他信息,它们与所采用的进程调度算法有关
  • 事件:指进程由执行状态变为阻塞状态所等待的发生的事件,即阻塞原因
  1. 进程控制信息
    包括:
  • 程序和数据的地址:是指进程的数据和程序所在的内存或外存地址,以便于再调度到该进程执行时,能从PCB中找到其程序和数据
  • 进程同步和通信机制:指实现进程同步和进程通信时必须的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB中
  • 资源清单:是一张列出了除CPU以外的、进程所需的全部资源以及已经分配到该进程的资源的清单
  • 链接指针:给出了本进程所在队列中下一个进程的PCB的首地址
进程控制块的组织方式
  1. 链接方式
  2. 索引方式

进程控制

进程的创建

引起创建进程的事件
  1. 用户登录
  2. 作业调度
  3. 提供服务
  4. 应用请求
进程的创建
  1. 申请空白PCB
  2. 为新进程分配资源
  3. 初始化进程控制块
  4. 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

进程的终止

引起进程终止的事件
  1. 正常结束:在任何计算机系统中,都应有一个用于标识进程已经运行完成的指示。(批处理系统的Holt指令,分时系统的Logs off)
  2. 异常结束:在进程运行期间,由于出现某些错误或故障而迫使进程终止,常见的错误有:
  • 越界错误:指程序所访问的存储区,已越出该进程的区域
  • 保护错:进程试图去访问一个不允许访问的资源或文件,或者以不适当的方式进行访问(进程试图去写一个只读文件)
  • 非法指令:程序试图去执行一条不存在的指令(原因可能是程序错误地转移到数据区,把数据当成了指令)
  • 特权指令错:用户进程试图去执行一条只允许OS执行的指令
  • 运行超时:进程的执行时间超过了指定的最大值
  • 等待超时:进程等待某事件的时间,超过了规定的最大值
  • 算术运算错:进程试图去执行一个被禁止的运算(如被0除)
  • I/O故障:I/O过程中发生了错误
  1. 外界干预:指进程应外界的请求而终止运行。这些干预有:
  • 操作员或操作系统干预
  • 父进程请求:父进程具有终止自己的任何子孙进程的权利
  • 父进程终止:当父进程终止时,OS也将他的所有子孙进程终止
进程的终止过程
  1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
  2. 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示进程被终止后应重新进行调度
  3. 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程
  4. 将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统
  5. 将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息

进程的阻塞与唤醒

引起进程阻塞和唤醒的事件
  • 请求系统服务
  • 启动某种操作
  • 新数据尚未到达
  • 无新工作可做
进程阻塞过程

正在执行的进程,当发现上述事件时,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为,进入block过程后,应立即停止进程的执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。

进程唤醒过程

当被阻塞进程所期待的事件出现时,如I/O完成或所期待的数据到达,则由有关进程(比如用完并释放该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语的执行过程是:首先把被阻塞的进程从阻塞队列移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中

进程的挂起与激活

进程的挂起

当出现了引起进程挂起的事件时,系统将利用挂起原语suspend()将指定进程挂起。

进程的激活

当发生激活进程的事件时,系统将利用激活原语active将指定进程激活。

进程同步

进程同步的基本概念

  • 进程(线程)同步:进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。(按顺序执行)
  • 异步:彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作

进程同步的方式和机制:

  • 临界区、互斥对象
  • 信号量、事件对象
两种形式的制约关系
  • 间接相互制约关系
  • 直接相互制约关系
同步机制应遵循的规则
  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

信号量机制

  1. 整型信号量:除初始化外,仅能通过两个标准的原子操作(P/V)来访问信号量
  2. 记录型信号量
  3. AND型信号量:将进程在整个运行过程中需要的所有资源,一次性全部地分配给进程,待进程使用完后再一起释放。只要尚有一个资源未能分配给进程,其它所有可能为之分配的资源,也不分配给他

进程通信

进程通信的类型

共享存储器系统
  • 基于共享数据结构的通信方式
  • 基于共享存储区的通信方式
消息传递系统

在消息传递系统中,进程间的数据交换,是以格式化的消息(message)为单位的。

管道(pipe)通信

管道,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名Pipe文件。向管道(共享文件)提供输入的发送进程(写进程),以字符流形式将大量数据送入管道;而接受管道输出的接收进程(读进程),则从管道中接收数据。

消息传递通信的实现方法

  1. 直接通信方式:指发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。此时,要求发送进程和接收进程都以显式方式提供对方的标识符。
  2. 间接通信方式:
  • 信箱的创建和撤销:进程可利用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性。对于共享信箱,还应给出共享者的名字。当进程不再需要读信箱时,可用信箱撤销原语将之撤销。
  • 消息的发送和接收:当进程之间要利用信箱进行通信时,必须使用共享信箱。

信箱可由操作系统创建,也可由用户进程创建,创建者是信箱的拥有者。据此,可把信箱分为以下三类:

  • 私用信箱:由用户创建,并作为该进程的一部分
  • 公用信箱:由操作系统创建,并提供给系统中的所有核准进程使用
  • 共享信箱:由进程创建,创建后,指明它是可共享的,同时必须指出共享进程(用户)的名字。

在利用信箱通信时,在发送进程和接收进程之间,存在以下四种关系:

  • 一对一关系
  • 多对一关系:也称为客户/服务器交互
  • 一对多关系:发送进程可进行广播方式,向多个接收者发送消息
  • 多对多关系:允许建立一个公用信箱,让多个进程都能向信箱中投递消息

线程

线程与进程

  • 进程:进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间
  • 线程:线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
  • 进程与线程的联系:线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程
线程与进程的区别
  • 根本区别:进程是操作系统资源分配的基本单位,而线程是CPU调度和执行的基本单位
  • 开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
  • 运行环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
  • 内存分配:系统在运行的时候会为每个进程分配不同的内存空间(独立地址空间);而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源(共享地址空间)。

线程的基本概念

为使程序能并发执行,系统还必须进行以下的一系列操作:

  1. 创建进程
  2. 撤销进程
  3. 进程切换
线程的属性
  1. 轻型实体
  2. 独立调度和分派的基本单位
  3. 可并发执行
  4. 共享进程资源
线程的状态
  1. 状态参数:在OS中的每一个线程都可以利用线程标识符和一组状态参数进行描述。状态参数通常有以下几项:
  • 寄存器状态:包括程序计数器PC和堆栈指针中的内容
  • 堆栈:在堆栈中通常保存有局部变量和返回地址
  • 线程运行状态:用于描述线程正处于何种运行状态
  • 优先级:描述线程执行的有限程度
  • 线程专用存储器:用于保存线程自己的局部变量拷贝
  • 信号屏蔽:对某些信号加以屏蔽
  1. 线程运行状态:执行状态、就绪状态、阻塞状态
线程的创建和终止

在线程OS环境下,应用程序在启动时,通常仅有一个线程在执行,该线程被人们称为初始化线程。它可以根据需要再去创建若干个线程。在创建新线程时,需要利用一个线程创建函数(或系统调用),并提供相应的参数,如指向线程主程序的入口指针、堆栈的大小,以及用于调度的优先级等。在线程创建函数执行完后,将返回一个线程标识符供以后使用。

终止线程的方式有两种:

  • 在线程完成了自己的工作后自愿退出
  • 线程在运行中出现错误或由于某种原因被其它线程强行终止
多线程OS中的进程

在多线程OS中,进程是作为拥有系统资源的基本单位,通过的进程都包含多个线程并为它们提供资源,但此时的进程就不再作为一个执行的实体。多线程OS中的进程有以下属性:

  • 作为系统资源分配的单位
  • 可包括多个线程
  • 进程不是一个可执行的实体

线程间的同步和通信

互斥锁

互斥锁用于实现进程间对资源互斥访问的机制。互斥锁有开锁和关锁两种状态

条件变量

每一个条件变量通常与一个互斥锁一起使用。亦即,在创建一个互斥锁时便联系着一个条件变量。单纯的互斥锁用于短期锁定,主要是用来保证对临界区的互斥进入。而条件变量则用于线程的长期等待,直至所等待的资源称为可用的。

信号量机制
  1. 私用信号量:当某线程需利用信号量来实现同一进程中各线程之间的同步时,可调用创建信号量的命令来创建一私用信号量。私用信号量属于特定的进程所有,OS并不知道私用信号量的存在。因此,一旦发生私用信号量的占有者异常结束或正常结束,但并未释放该信号量所占有空间的情况时,系统将无法使它恢复为0,也不能将它传给下一个请求它的线程。
  2. 公用信号量:公用信号量是为实现不同进程间或不同进程中的各线程之间的同步而设置的。

内核级线程和用户级线程

内核级线程

无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤销和切换等,也是依靠内核实现的。此外,在内核空间还为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块而感知某线程的存在的,并对其加以控制

用户级线程

用户级线程仅存在于用户空间中。对于这种线程的创建、撤销、线程之间的同步与通信等功能,都无需利用系统调用来实现。对于用户级线程的切换,通常是发生在一个应用进程的诸多线程之间,这时,同样无需内核的支持

用户级和内核级进程的区别
  • 用户态的进程能存取它们自己的指令和数据,但不能存取内核指令和数据(或其他进程的指令和数据)。
  • 核心态下的进程能够存取内核和用户地址

系统调用

由操作系统实现提供的所有系统调用所构成的集合即程序接口或应用编程接口(Application Programming Interface,API)。是应用程序同系统之间的接口。(摘自百度百科)

系统调用和中断

系统调用和中断的关系就在于,当进程发出系统调用申请的时候,会产生一个软件中断。产生这个软件中断以后,系统会去对这个软中断进行处理,这个时候进程就处于核心态了

线程控制

用户级线程的实现
  1. 运行时系统:实质上是用于管理和控制线程的函数(过程)的集合。正因为有这些函数,才能使用户级线程与内核无关。运行时系统中的所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口
  2. 内核控制线程:又称轻型进程LWP(Light Weight Process),每个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据结构。LWP可通过系统调用来获得内核提供的服务,这样,当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便拥有了内核支持线程的所有属性。

   转载规则


《操作系统知识点总结(1)》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录