1199 字
6 分钟
操作系统基础1204

1. 操作系统基本概念#

1.1 什么是操作系统#

  • 是运行在内核态的软件,是应用程序与硬件之间的媒介,帮助用户管理硬件资源

1.2 操作系统主要有哪些功能#

  • 处理器管理:CPU的分配和管理,主要指的是==进程管理==

  • 内存管理:内存的分配和管理,主要用==虚拟内存==的方式

  • 外存管理(硬盘管理):外存(硬盘等)的分配和管理,将外存以文件的形式提供出去

  • I/O管理:对输入/输出设备的统一管理

除此之外,还有:

  • 保证自身正常运行的健壮性管理

  • 防止非法操作和入侵的安全性管理(例如:段错误)

2. 操作系统结构#

2.1 什么是内核#

  • 内核是一个计算机程序,是操作系统的核心

  • 提供了操作系统最核心的功能,可以控制操作系统中所有内容

2.2 什么是用户态和内核态#

  • 内核具有很高的权限,可以控制CPU、内存、硬盘等硬件

    • 考虑到权限控制,所以大多数的操作系统把内存分成了两个区域:

      • 内核空间:只有内核程序可以访问

      • 用户空间:专门给应用程序使用,权限比较小

  • 用户空间的代码只能访问一个局部的内存空间

  • 内核空间的代码可以访问所有内存空间

    • 当程序使用用户空间时,就说这个程序在用户态执行,当程序使用内核空间时,说这个程序在内核态执行

2.3 用户态和内核态是如何切换的#

  • 通过系统调用(受限的内存访问)来切换

3. 进程和线程#

3.1 并行和并发有什么区别#

  • 并发:

    • 在==一段时间==内,多个任务都会被处理

    • 但在==某一时刻==,只有一个任务在执行

      单核处理器做到并发,其实是利用==时间片轮转==(CPU的分时复用),在宏观上表现为同时执行多条指令

  • 并行:

    • ==同一时刻==,多个任务同时执行

      • 需要多核处理器才能实现

      不同的程序被放到不同的处理器上运行,是物理上的多个进程同时运行

3.2 什么是进程的上下文切换#

  • 单核单线程CPU,某一时刻只能执行一条CPU指令

  • 上下文切换:将CPU资源从一个进程分配给另一个进程的机制

  • ==计算密集型任务==不适合上下文切换,所以不适合并发

  • 并发的好处:比如一个程序需要经常读取数据(==I/O密集型任务==),在读取数据前无法进行运算,此时这个进程如果占用CPU就是对资源的浪费,可以在这个时间把CPU用于处理别的进程

3.3 进程有哪些状态#

  • 就绪态、阻塞态、运行态

  • 就绪态(Ready):可运行,由于其他进程处于运行状态而暂时停止运行

  • 阻塞态(Blocked):该进程正在等待某一事件发生(如等待输入/输出操作的完成)而暂时停止运行,这时,即使给它CPU控制权,也无法运行

  • 运行态(Runing):该时刻进程占用CPU

后来又加了两个基本状态:

  • 新建态(New):进程正在被创建时的状态

  • 终止态(Exit):进程正在从系统中消失时的状态

进程的状态

3.4 什么是僵尸进程#

  • 已完成处于==终止状态==,但在==进程表==中仍然存在的进程

    • 僵尸进程一般发生在有父子关系的进程中

      • 一个子进程的==进程描述符==在子进程退出时不会释放,只有当父进程通过wait()waitpid()获取了子进程信息后才会释放

      • 如果子进程退出,而父进程没有调用wait()waitpid(),那么子进程的描述符仍然保存在系统中

3.5 什么是孤儿进程#

  • 一个父进程退出,而它的子进程还在运行,这些子进程将成为孤儿进程

  • 孤儿进程会被init进程(进程ID为1的进程)收养,并由init进程完成对它们的==状态收集工作==

  • 因为孤儿进程会被init进程收养,所以孤儿进程不会对系统造成危害

  • 操作系统的第一个进程是0号进程,干完活会结束,但是1号进程不会结束,它会等待孤儿进程并领养(注意:不同发行版本不一定保证孤儿进程被1号进程领养,例如Ubuntu)

操作系统基础1204
https://fuwari.cbba.top/posts/操作系统基础1204/
作者
Chen_Feng
发布于
2023-12-04
许可协议
CC BY-NC-SA 4.0