程序员面试-操作系统-进程

来源:互联网 发布:淘宝卖家营销分析 编辑:程序博客网 时间:2024/06/15 07:00

操作系统-进程

定义:操作系统是控制和管理计算机硬件资源和软件资源合理地组织和管理计算机的工作流程以及方便用户使用的程序集合,
地位:它位于硬件之上,所有其他软件下,它是对硬件系统功能的首次扩充。
特征:

1) 并发:指两个或多个事件在同一处理机,同一时间间隔内处于启动与执行之间,但是同一时刻,只能有一个程序运行。

2) 共享:计算机系统中的资源不再为某个用户独占,而是可供多个用户共享。共享分为:互斥共享(一段时间只允许一个用户使用该资源);非互斥共享(一段时间内允许多个用户“同时”使用,依旧是宏观上并行,微观上的串行,如CPU,内存等。

3) 虚拟性:将一个物理实体变为多个逻辑实体,通过对物理实体的分时使用,使用户感觉是多个实体存在。

4) 异步性:不可预知的进度向前推进。

分类:

1) 批处理操作系统:在系统中不仅内存可以同时存在多道程序运行,并且多个作业可以同时进入系统,多个作业被同时存放在系统外存队列中,然后由操作系统按一定的规则从队列中调度一个或多个作业进入到内存中。特点:系统资源利用率高,作业吞吐量大,无交互性。

2) 分时系统:把计算机系统资源的使用进行时间上的分割,每个时间段称为一个时间片,用户依次轮流使用时间片。特点:同时性、交互性、独立性、和及时性

3) 实时系统:在限定的时间内对输入进行快速处理并作出响应。主要用于过程控制,事务处理等有实时要求的领域(如工业控制、军事控制)。特点:实时性:(响应时间短);可靠性(系统可靠性高)

1 进程管理

1.1 进程与线程的区别

1) 进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。

2) 线程:线程是进程的一个实体,是CPU调度和分配的基本单位,线程自己基本不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。

引入线程主要有以下4个方面的优点:

1) 易于调度

2) 提高并发性

3) 开销小

4) 有利于发挥多处理器的功能

线程与进程的区别:

1) 一个线程必定属于也只能属于一个进程;而进程可以拥有多个线程并且至少拥有一个线程

2) 属于一个进程的所有线程共享该进程的所有资源。不同的进程相互独立。

3) 线程也被称为轻量级的进程,线程间切换代价小,进程间切换代价大。

4) 进程是程序的一次执行,线程可以理解为程序中一段程序片段的执行。

5) 每个进程都有独立的内存空间,而线程共享进程的内存空间。

1.2 进程与程序的区别与联系

区别:

1) 程序是静态的,是有序代码的集合;进程是动态的是程序的一次执行。

2) 程序是永久的没有生命周期,进程是暂时的,有生命周期是一个动态变化的过程。

3) 进程是操作系统资源分配和调度的基本单位,程序没有此功能。

4) 进程与程序的结构不同

联系:

1) 通过多次执行,一个程序可以对应多个进程。

2) 通过调用关系,一个进程可包括多个程序。 ##1.3 进程的存储映像

3) PCB:包含着进程的描述和控制信息,进程存在的唯一标识。

4) 程序:“纯代码”部分,描述了进程要完成的功能,是进程执行时不可修改的部分。

5) 数据:进程执行时用到的数据。

6) 工作区:一片可供进程使用的动态区域(堆栈区)可用于保存局部变量,传参,系统调用是有效返回地址等。

1.4 进程的执行与控制

进程的基本状态及转换

 

1.5 进程调度

按照一定的算法,从就绪队列中选择某个进程占用CPU的方法。
原则: 

 

FCFS

简单、可靠、实现方便、灵活性差

基于优先级的调度算法

为进程设定优先级,当优先级相同时按FCFS。
优先级确定的方法:

1) 静态优先级数法:创建时确定,运行时不改变

2) 动态优先数法:执行中确定,可以根据情况变化

时间片轮转(RR)

专门为分时系统设计,对所有进程较为公平,对用户反应及时。

多级反馈队列调度算法

引入多个就绪队列。通过对各队列的区别对待,达到一个综合调度目标。

1.6 进程间的相互作用-同步与互斥

同步:多个相关进程在执行次序上协调。



同步有哪些机制:

1) 临界区:通过对多线程的串行化来访问公共资源或一段代码,速度更快,适合控制数据访问

2) 互斥量:为协调共同对一个共享资源的单独访问而设计。只有拥有互斥对象的线程才有权限去访问系统的公共资源,因为互斥对象只有一个,所以能够保证资源不会同时别多个线程所访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公有资源安全共享。

3) 信号量:为控制一个具有有限数量的用户资源而设计。它允许多个线程在同一个时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。

4) 事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。

互斥:多个进程竞争临界资源,而互相排斥执行的过程称为进程的互斥。



临界资源:也称独占资源,是指在一段时间内只允许一个进程访问资源,如打印机,磁带机,共享的数据变量等。

信号量(semaphore)和P、V操作

特点:表示资源的实体---是一个与队列有关的整型变量,其值只能通过初始化操作和P、V操作来访问。
信号量的类型:

1) 公用信号量:用于进程间的互斥、初始值通常为1

2) 私有信号量:用于进程间的同步,初始值通常为0或n。

P操作:分配一个单资源
    P(s):
    S=S-1;
    if(S<0)
    { 调用进程被阻塞,进入S的等待队列 }
V操作:意味着释放一个单位资源。
    V(s):
    S = S+1;
    if(S<=0)
    { 从S的等待队列中唤醒一个进程,使其进入就绪状态 }
注意:V操作在唤醒别人的同时不会阻塞调用进程。
IPC经典问题---读者写者问题
问题描述:多个并发进程共享一个数据对象,多个读者可以同时读取共享数据对象,“写者”不能和其他任何进程同时访问共享数据对象。


分析:

-分析进程的行为:读进程系统会有多个读进程同时访问数据,不过我们可以见将他们的行为合并,只需要区分第一个进入(占有临界资源)和最后一个离开的读进程(释放临界资源)

-确定临界资源:Datareadnum

-确定同步和互斥关系:

    +读者--读者:互斥访问readnum

    +读者--写者:互斥访问Data

    +写者--写者:互斥访问Data

设置信号量

int readnum = 0

semaphore mutex = 1,write =1 //mutex用于对readnum互斥;write用于写者之间,用于读者写者之间互斥:

问题描述:医院有n个医生坐诊,每个患者进入医院后先取一个号,并等待叫号,当一个医生空闲下来时,就叫下一个号。试利用P,V操作,设计医生和患者同步算法。
分析:

医生:叫号---为患者服务-- 休息

患者:取号---等待叫号-- 被服务

信号量设置:

semaphore patient=0;//病人数

semaphore doctor=n;//医生数

int num = 0;//记录取号值

int next = 0//记录叫号值

semaphore mutex_num = 1;

semaphore mutex_next = 1;

 

使用P、V操作时的注意事项

+ PV操作(对同一信号量)总是成对出现的,互斥操作时,他们处于同一进程,同步操作时,他慢处于不同进程中。

+ PV操作的位置和次序十分重要,使用时注意逻辑关系。

1.7 进程通信

简单来说就是进程间传输数据(交换信息)。
根据交换信息量的多少和效率的高低划分为:

1) 低级通信:只能传递数据状态和整数值(控制信息)

2) 高级通信:能够传递大量数据,通信效率高。

系统提供的高级通信方式

1) 共享内存模式:最快捷有效的方式之一:间接通信原理

 

2) 消息传递模式:消息:有发送方形成,通过一定的机制传递给接收方的一组信息,它的长度可固定,也可以变化。

 

3)-1 管道:管道是一种信息流缓冲机制,基于文件系统可以连接两个进程,以FIFO方式单向传送数据。匿名管道是一种未知命名,单向管道,通常用来在父进程和子进程之间传输数据。匿名管道总是本地的,不能在网络之间传递数据

3)-2 命名管道是一种有名称的,可以在同一台计算机的不同进程之间或跨越一个网络的不同计算机的不同进程之间传输数据的进程通信方式,支持可靠的、单向或双向的数据通信。


1.7 内核线程和用户线程

内核线程:内核线程的建立和销毁都是由操作系统负责,通过系统调用完成,操作系统在调度时,参考各进程内的线程运行情况做出调度决定。如果某个进程中没有任何一个线程处于就绪状态,那么这个进程不会被调度占用CPU。
用户线程:用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,用户进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。
引入用户线程有以下4个方面的优势:

1) 可以在不支持线程的操作系统中实现。

2) 创建和销毁线程、线程切换等线程管理的代价比内核线程少。

3) 允许每个进程定制自己的调度算法,线程管理比较灵活。

4) 线程能够利用的表空间和堆栈空间比内核级线程多。

入用户线程的缺点:

1) 同一个进程中只能同时有一个线程运行,如果一个进程中的某个线程使用了系统调用而阻塞,整个进程也将被阻塞。

2) 页面失效也会产生类似的问题。

 

原创粉丝点击