操作系统常见问题整合

操作系统常见问题整合

1. 进程相关

1.1 进程和线程的区别是什么,协程是什么?

reference:https://www.zhihu.com/question/25532384/answer/411179772

进程是资源分配最小的单位,线程是CPU调度的最小单位

比喻一下:进程=火车,线程=车厢

  • 线程在进程下行进(单纯的车厢无法运行)

  • 一个进程可以包含多个线程(一辆火车有多个车厢)

  • 不同进程之间数据很难共享(一辆火车的乘客,很难换到另外一辆火车)

  • 同一进程下不同线程间数据很容易共享(一辆火车的乘客,A车厢换到B车厢很容易)

  • 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更消耗资源)

  • 进程间不会相互影响(多列火车之间互相不会相互影响)

  • 进程可以拓展到多机,进程适合多核

协程Coroutines是一种比线程更加轻量级的微线程。类比一个进程可以拥有多个线程,一个线程也可以拥有多个协程。

1.2 进程之间的通信方式

进程间通信是两个进程之间进行信息交流的一种机制,不仅仅会发生于同一主机的两个进程之间,也可以发生在不同主机的两个进程之间。进程之间的通信方式有很多,例如:管道(pipe)、信号量(semaphore)、共享内存(shared memory)、消息队列(message queue)、以及套接字(socket)等等

1.2.1 UNIX管道(pipe)

在 shell 中, 我们经常使用 | 将两个命令连接起来, 将前一个命令的输出作为后一个命令的输入, 这是管道使用最典型的例子

1.2.2 UNIX信号量(semaphore)

dijkstra提出,能非常好的实现并发控制——生产者消费者模型,PV操作

1.2.3 UNIX共享内存

在同一操作系统上运行的多个进程之间,他们是相互独立的,每个进程都有自己的地址空间,其它进程无法访问当前进程的内存区域。

UNIX的另一种进程间通信机制是使用共享内存,共享内存是进程创建的特殊地址空间,不同进程可以将同一块内存地址连接到他们自己的内存空间中,此时任何一个进程向共享内存区写入数据,其它进程都可以读到

1.2.4 UNIX消息队列

FIFO消息队列

1.3 进程调度算法

先来先服务(FCFS)、优先级调度、时间片轮转、短进程优先等调度苏娜发

1.4 进程的状态转换

reference:https://blog.csdn.net/weixin_42229896/article/details/80625587

新建态、就绪态、运行态、退出态、阻塞态

新建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是进程控制块已经创建,但还没有加载到内存中的进程

就绪:进程已经做好了准备,只要有机会就开始执行

阻塞(等待):进程在某些事件发生前不能执行,等待阻塞进程的事件完成

退出:操作系统从可执行进程组中释放出的进程,或由于自身或某种原因停止运行

2. 内存相关

2.1 分页和分段的区别

连续分区中的固定分区造成了内碎片的问题,连续分区中的动态分区造成了外碎片,压缩开销大的问题。所以需要引出离散分配方式,而分页和分段正是两种离散式的分配方式。

分页基本思想:划分内存大小为共同的区域,插照片+页表,内存分配以页框为单位,进程装入时,按页分塞得放置在内存中的空闲框中,这些内存框可以不连续。

分段基本思想:逻辑地址空间由一组段组成,由用户程序员划分,段是一个基本的逻辑单位。各段有自己的段名/段号长度。段表为进程中的每个段分配了一个连续空间,为每个进程建立一张段表。

2.2 虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。 Windows 8/8.1 操作系统如出现开机时卡在Windows徽标页面,无法进入系统,必须强制关机再重启才能打开时,可适当调整虚拟内存设置解决。

硬盘空间虚拟成内存,内存装不下就和硬盘某种方式调度

2.3 页面置换算法

最佳置换、FIFO(先进先出)、LRU(最近最久未使用)


操作系统常见问题整合
http://example.com/2022/12/05/develop/计算机基础/os/操作系统常见问题整合/
作者
Curious;
发布于
2022年12月5日
许可协议