初识操作系统

Posted 头发都哪去了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识操作系统相关的知识,希望对你有一定的参考价值。

1.硬件组成:冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。具体什么是冯诺依曼体系结构,如图:
在这里插入图片描述
输入设备:包括键盘,鼠标,扫描仪,写板等。
中央处理器(CPU):含有运算器和控制器等。
输出设备:显示器,打印机等。
注意事项:CPU和输入设备或输出设备之间不能直接交互,必须依靠中间的存储部分(内存)。
内存与硬盘的区别:

  1. 内存的读写速度要远远大于磁盘,内存读写速度纳秒级别,硬盘读写速度是微秒级别。
  2. 内存的价格远大于硬盘。
  3. 内存中的数据不能持久化(当电脑重启之后数据就没了),而硬盘的可以持久化。

2.操作系统(Operator System)

概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  1. 内核(进程管理,内存管理,文件管理,驱动管理)。
  2. 其他程序(例如函数库,shell程序等等)。

OS定位

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。
在这里插入图片描述
上面有关OS的样例,我们能看到如下结论:

  1. 管理者的任务种类分两种:硬件管理软件管理。
  2. 按照目标对象分两种:一种对内的管理,一种对外业务进行管理。

设计OS的目的

  1. 与硬件交互,管理所有的软硬件资源(对内且对下)。
  2. 为用户程序(应用程序)提供一个良好的执行环境(对外且对上)。

在这里插入图片描述

3.进程

进程的初步认识

对于操作系统来说,一个任务就是一个进程(Process)。
课本概念:程序的一个执行实例,正在执行的程序等。
内核观点:担当分配系统资源(CPU时间,内存)的实体。
内核部分产生一个由双向链表组成的PCB(进程管理模块)
PCB(进程管理模块)分为:

  1. PID(主键ID、身份标识)。
  2. 状态信息(就绪、运行、阻塞、终止)。
  3. 优先级。
  4. 记账信息(防止CPU资源分配不均)。
  5. 一组指针(需要使用的资源)。
  6. 上下文(当分配到CPU资源时执行,没有CPU资源之后,暂时保存自己当前的状态,等待下一次执行,这个过程就叫做一个上下文)。

时间片

现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。所谓的多任务,就是操作系统可以同时运行多个任务。
操作系统(如Windows、Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。
这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”,这也就是我们所说的并发

并发与并行

现在,多核CPU已经非常普及了,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。对于

  1. 并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
  2. 并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行。

计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指进程的并行性(多处理机的情况下,多个进程同时运行)和并发性(单处理机的情况下,多个进程在同一时间间隔运行的)。

内核态与用户态

一般的操作系统(如Windows、Linux)对执行权限进行分级:用户态和内核态。
如上图所示,操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心态。
用户程序的权限最低,称为用户态。

进程中的上下文

上下文简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文环境的切换。

  1. 就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
  2. 切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

进程状态

在这里插入图片描述
就绪:进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
运行:进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
阻塞:进程不具备运行条件,正在等待某个事件的完成。

进程/线程小结

进程小结

进程:进程是操作系统分配资源的最小单位。
内核部分产生一个由双向链表组成的PCB(进程管理模块)进程属性:

  1. PID
  2. 状态
  3. 优先级
  4. 记账信息
  5. 上下文
  6. 一组指针(进程占用的资源)

并发:从宏观的角度来看它是一起执行的,从微观的角度来看它是轮流执行的。
并行:无论是从宏观还是微观的层面,都是一起执行的。

线程小结

线程:系统调度资源的最小单位
线程是进程执行的最小单位,也是进程执行的实际单位。
一个进程中最好包含一个线程;线程必须依附进程当中。进程就好比工厂,线程就好比一个一个流水线。
进程是系统分配资源的最小单位;线程是系统调度的最小单位。
进程不可以共享资源;而线程可以共享资源。

线程可以共享的资源:

  1. 打开的文件。
  2. 内存(对象)。

线程不可共享的资源:

  1. 上下文
  2. 记账信息
  3. 状态
  4. 线程栈信息
  5. 优先级

注意事项:线程的数量并不是越多越好

当线程的数量到达某个合适的值是最好的,如果有太多的线程,就会出现,线程之间的争抢和 CPU的过度调度问题了,而CPU调度是需要消耗系统资源的,所以线程不是越多越好。

那线程的数量多少是最好的?
答:要看具体的应用场景。
密集计算的CPU任务、IO(文件读写)型任务。
当使用的场景是计算型任务时,线程的数量等于CPU的数量是最好的。
当使用的场景IO型任务时,理论上线程数量越多越好。

以上是关于初识操作系统的主要内容,如果未能解决你的问题,请参考以下文章

初识多线程

初识操作系统和linux

文件操作的初识

程序员养成计划-操作系统篇之初识操作系统

并发编程初识

操作系统之进程初识