overview¶
约 990 个字 7 张图片 预计阅读时间 5 分钟
什么是一个操作系统?
一个不断运行着的、控制硬件的软件程序
职能
- Resource Allocator
为上层的 App 分配底层资源
- Control Program
控制程序的运行,防止错误的发生
Architecture¶
- Single Processor System
- Multiprocessor System
- 单核
多个 Processor 拥有各自的 local cache 但共享物理资源. 每一对 CPU 都执行所有的任务 - 多核 多核的优势在于耗能更低,一个芯片中数据交互更方便
- NUMA
- 单核
Operation¶
graph LR
1[interrupt]
1-->2[hardware]
1-->3[trap/exception]
3-->4[error]
3-->5[system call]
Multiprogram & Multitasks¶
前者偏向于改进系统效率方面,后者偏向于改进用户体验
Multiprogram 增强了 CPU 的利用效能
- A subset of total jobs in system is kept in memory¶
Multitasks | Time sharing
在同一时间内让多个任务(或进程)共享系统资源并同时运行的技术。尽管在单核CPU上,实际上每次只能执行一个任务,操作系统通过快速切换任务,让用户感觉多个任务在同时进行。
- Response Time 比较短,有利于交互
- 把 CPU 分为不同的 Time Slides,不断切换不同的进程
Dual Modes¶
存在一个 Mode bit 来控制状态,0(内核态)1(用户模式)
- User Mode 发出 system call
- Privilege | Kernel | system | supervisor Mode
存在风险的指令为 Privileged Instructions
,只能由内核模式执行。中断只能运行在 kernel mode
状态切换
Timer¶
一般包含一个 clock 和一个 counter,每次 clock tick 都会使 counter--,counter 等于 0 触发中断。 在进入用户模式之前(before scheduling process),都会设置一个 Timer,防止陷入无限循环。
Resource Management¶
操作系统为进程分配资源,如 CPU、 Memory、 Input Data 等等
Process Management¶
什么是进程?
一个单独的程序并不是一个进程,一个程序是静态的,是 passive entity。而进程要求是一个运行中的程序,active entity。
进程具有 Isolation 的特点,一个进程爆了并不会影响另外一个
进程和线程
|特性|进程|线程|
|---|---|---|
|内存空间|独立分配|共享同一进程的内存空间|
|资源占用|占用较多资源|占用资源少,切换成本低|
|通信方式|需要通过IPC机制|共享内存,通信简单|
|创建开销|创建和切换开销较大|创建和切换开销较小|
|崩溃影响|一个进程崩溃不会影响其他进程|一个线程崩溃可能影响进程内其他线程|
- 一个进程下可以有多个线程
- 每一个线程都会有一个 Program Counter 指向下一个要执行的指令
Memory Management¶
Operating System Structures¶
System Call¶
https://note.hobbitqia.cc/OS/chap01/#system-calls
Operating System¶
Linker And Loader¶
VM¶
System boot¶
硬件如何确定操作系统的位置呢?这需要有一段代码可以定位内核的位置并把它放到 memory 中运行。这段代码就被称之为 bootstrap program / bootstrap loader. 通过加载内核来启动计算机的过程称之为 booting the system.
Process
- bootstrap program or boot loader locates the kernel. 定位内核
- The kernel is loaded into memory and started. 装载内核
- The kernel initializes hardware. 初始化硬件
- The root file system is mounted. 挂载根文件系统
mount
: 将一个文件系统和一个存储设备关联起来
What is a rootfs
?
The root filesystem is at the top of the hierarchical file tree (also known as ‘/’). The Linux kernel directly mounts rootfs through the configuration argument ‘root=‘. The root filesystem also has mount points where we can mount other filesystems as well in order to connect them to this filesystem hierarchy. It has a number of directories containing files critical for booting the system and system operations.
相较于其他文件系统,rootfs 的特殊之处就在于它是第一个被挂载的文件系统,且其被挂载之后,将启动一些默认的初始化程序。
比如,在命令 ``
题目¶
Which of the following instructions should be privileged(in kernel mode)?
a. Set value of timer.
b. Read the clock.
c. Clear memory.
d. Issue a trap instruction.
e. Turn off interrupts.
f. Modify entries in device-status table.
g. Switch from user to kernel mode.
h. Access I/O device.