操作系统初识——快速入门操作系统(1)

······这是一篇适合那些想要快速入门操作系统的,并且没有学习过操作系统但是不想花大量时间学习的小伙伴们学习的文章。这是第一篇概述

基本特征

1. 并发

并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。

并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。

操作系统通过引入进程和线程,使得程序能够并发运行。


2. 共享

共享是指系统中的资源可以被多个并发进程共同使用。

有两种共享方式:互斥共享和同时共享。

互斥共享:

互斥共享的资源称为临界资源(独占资源),例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实现互斥访问。

同时共享:

计算机中的某个资源在在一段时间内可以同时允许多个进程访问,这里的同时是宏观上的,在微观上是交替进行访问的。


3. 虚拟

虚拟技术把一个物理实体转换为多个逻辑实体。

主要有两种虚拟技术:时(时间)分复用技术和空(空间)分复用技术

多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。

虚拟内存使用了空分复用技术,它将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间的页被映射到物理内存,地址空间的页并不需要全部在物理内存中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。

4. 异步

异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。


基本功能

1. 进程管理

进程控制、进程同步、进程通信、死锁处理、处理机调度等。

2. 内存管理

内存分配、地址映射、内存保护与共享、虚拟内存等。

3. 文件管理

文件存储空间的管理、目录管理、文件读写管理和保护等。

4. 设备管理

完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。

主要包括缓冲管理、设备分配、设备处理、虛拟设备等。


系统调用

如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。

操作系统初识——快速入门操作系统(1)

Linux 的系统调用主要有以下这些:

Task Commands
进程控制 fork(); exit(); wait();
进程通信 pipe(); shmget(); mmap();
文件操作 open(); read(); write();
设备操作 ioctl(); read(); write();
信息维护 getpid(); alarm(); sleep();
安全 chmod(); umask(); chown();

宏内核和微内核

1. 大内核(宏内核)

操作系统初识——快速入门操作系统(1)
图片来源:马士兵教育
大内核是将操作系统功能作为一个紧密结合的整体放到内核。

由于各模块共享信息,因此有很高的性能。

2. 微内核

操作系统初识——快速入门操作系统(1)

由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。

在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。

用户程序想要访问另外一个应用程序(或者其他的基本功能),需要先访问内涵,内核再帮你访问。

因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失

操作系统初识——快速入门操作系统(1)

用户态和内核态:

1.用户态:

  • 当一个进程在执行用户自己的代码时处于用户运行态(用户态),大部分用户直接面对的程序都是运行在用户态。
  • 不能直接使用系统资源,也不能改变CPU的工作状态,并且只能访问这个用户程序自己的存储空间。

2.内核态:

  • 系统中既有操作系统的程序,也有普通用户的程序。为了安全和稳定性,操作系统的程序不能随便访问,这就是内核态。
  • 内核态可以使用所有的硬件资源。

3.特权级:

  • Linux使用了Ring3级别运行用户态,Ring0标识内核态。
  • Ring3状态不能访问Ring0的地址 空间,包括代码和数据。
  • Linux进程的4GB地址空间,3G-4G部分大家是共享的,是内核态的地址空间,这里存放在整个内核的代码和所有的内核模块, 以及内核所维护的数据。用户运行一个程序,该程序所创建的进程开始是运行在用户态的,如果要执行文件操作,网络数据发送等操作,必须通过 write,send等系统调用,这些系统调用会调用内核中的代码来完成操作,这时,必须切换到Ring0,然后进入3GB-4GB中的内核地址空间去执 行这些代码完成操作,完成后,切换回Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。

中断

指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。

1. 软中断(软件中断)

软中断不会直接中断CPU, 也只有当前正在运行的代码(或进程)才会产生软中断. 软中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求.软中断是执行中断指令产生的.

软中断就一个号:0x80(80中断)

2. 硬中断(硬件中断)

硬中断由硬件产生。每个设备或者设备集都有自己的IRQ(中断请求),基于IRQ, CPU可以将相应的请求分发到相应的硬件驱动上(注: 硬件驱动通常是内核中的一个子程序, 而不是一个独立的进程).处理中断的驱动是需要运行在CPU上的, 因此, 当中断产生时, CPU会暂时停止当前程序的程序转而执行中断请求。

硬中断可以直接中断CPU。硬中断可以中断软中断。

硬件中断又分为外部中断(可屏蔽)和内部中断(不可屏蔽)

1.外部中断

可屏蔽。外部中断为一般外设请求

2.内部中断

不可屏蔽。内部中断包括硬件出错(掉电,校验,传输)和运算出错(非法数据,地址,越界,溢出)

由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。


参考资料:马士兵教育 CyC208