操作系统|进程、线程、死锁

目录

1、操作系统是什么?操作系统具有什么特征?

操作系统是操作硬件的一组软件集合。

操作系统位于硬件之上的第一层,它屏蔽硬件操作的复杂性并想高层提供抽象服务。它的作用是管理计算机资源(处理机、存储设备、IO 设备),使它们高效运转,这些管理体现在处理机调度、内外管理、文件管理、IO 管理、网络管理。同时操作系统也提供一个让用户与系统交互的操作界面。

操作系统的特征

  • 共享性

    • 多进程程并发势必争夺处理机资源,处理机成功共享资源
    • 计算机中的一个资源能被多个进程使用,使用时需要同步保证每次只有一个进程访问
  • 并发性

    • 操作系统中存在多个进程、多进程之间是并发执行的,并发是指在一段时间内有多个线程执行,从微观角度来看他们是交替执行的
  • 虚拟性

    • 是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。运用:时分复用、空分复用
    • 计算机使用 SPOOLing 技术实现设备虚拟性,如虚拟内存,虚拟设备
  • 异步性

    • 进程的执行是异步的,每个进程以不可推测的速度向前推进

2、简述冯诺依曼理论体系结构

  • 运算器
  • 控制器
  • 存储器
  • 输入设备
  • 输出设备

3、简述批处理系统、分时系统、实时系统

  • 批处理系统: 批处理系统分为单道批处理系统和多道批处理系统,批处理系统一次读入一批作业然后进行处理,单道批处理一次只能处理一道作业,而多道批处理系统可以处理多道作业。

  • 分时系统:分时操作系统为每个用户进程分配固定的时间片来使用处理机,时间片使用完后阻塞用户进程。分时操作系统是具有交互式的操作系统。

  • 实时系统:分时操作系统是一种严格按照进程的结束时间和进程的优先级来执行进程调度的操作系统,分时操作系统可以保证作业的高响应,是比较可靠的操作系统。

4、简述进程与线程(什么是进程?什么是线程?它们的区别是什么?)

进程:进程是内存中一段程序的动态执行,是系统进行资源调度和分配的基本单位。

线程:轻量级进程,可以线程理解为进程的子任务,完成进程要处理的一部分功能,进程是程序执行的单位。

区别:

  • 进程更多的是面向操作系统,由操作系统调度,而线程面向应用程序
  • 进程是操作系统分配资源的单位,而线程是执行程序中功能的单位
  • 线程相比于进程更加轻量级,体现在:创建开销小(10~100 倍)、切换速度快

5、简述进程的状态及其转换(可以说些例子)

进程的三种基本状态:

  • 就绪
  • 阻塞
  • 执行

就绪 -> 执行,进程被调度,从就绪队列取出,把处理机使用权交给进程 执行 -> 阻塞,进程发生 I/O 请求、读取磁盘数据等,进程从被加入阻塞队列 阻塞 -> 就绪,I/O 请求完成,进程获取到输入数据了,将进程重阻塞队列取出添加到就绪队列 执行 -> 就绪,进程使用处理机的时间片用完,对进程进行调度,把进程放到就绪队列

6、进程间通信方式(IPC)有哪些?

  • 管道
  • 消息队列
  • 信号量(低级通信)
  • 共享内存
  • socket 套接字

7、什么时候创建进程?什么时候终止(退出)进程?

创建进程的事件:

  • 操作系统初始化,会创建若干系统进程
  • 正在运行的进程通过系统调用创建进程
  • 批作业的初始化
  • 用户请求创建一个进程

终止进程:

  • 正常退出,在 linux 如 exit 命令
  • 出错退出(自愿退出)
  • 严重错误退出(系统终止,非自源)
  • 被其他进程杀死

8、解释死锁

死锁是由于多个进程竞争有限个资源,而每个进程都没有得到满足所处的僵直状态,使得进程无法继续向前推进。

9、简述死锁的必要产生条件和解除(处理策略)

死锁产生的原因是:资源争夺、资源不足、进程执行顺序不当、进程的执行满足了产生死锁的条件,这种进程的状态就称为死锁

产生死锁的条件:

  • 资源互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁( 如哲学家的筷子、打印机设备)。像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)。
  • 保存和等待条件:进程已经请求到至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放。
  • 不可抢占条件:进程使用的资源在未使用完之前,不能由其他资源夺走,只能主动释放
  • 循环等待条件:两个及以上的进程出现了互相等对方的情况,每个进程获得的资源被其他进程所请求。

死锁的解除:

  • 忽略死锁的影响,鸵鸟算法
  • 死锁预防,破坏四个必要条件的一个或多个。
  • 避免死锁,在资源动态分配过程中用某种方法防止系统进步不安全状态,典型的有银行家算法
  • 死锁的检测及解除,通过系统的检测机头及时地检测出死锁的发生,然后采取某种措施解除死锁。