操作系统-1

核心概念

操作系统的核心职能是有效地组织和管理计算机系统中的硬件资源(如处理器、内存、硬盘、外设),并向上层应用程序或用户提供简洁的服务功能接口,屏蔽硬件管理的复杂性。内核是操作系统的核心,主要模块包括进程调度、内存管理、设备管理、文件系统和网络管理

值得注意的是,不同的操作系统采用不同的内核架构:Linux内核通常采用宏内核(Monolithic Kernel),将大部分服务集成在内核空间中以追求高性能;而 iOS 采用混合内核(Hybrid Kernel),它结合了宏内核和微内核的优点,其核心是 Mach 微内核和 BSD 系统

进程管理

简单点说:

进程管理的核心任务: 决定谁来使用 CPU,以及用多久。

  • 通俗理解:
    想象 CPU 是一个 大厨,而“进程”就是一道正在做的 (比如炒宫保鸡丁)。代码是菜谱。
    虽然大厨一次只能颠一个勺,但他动作极快,一会儿切这道菜的肉,一会儿翻那道菜的锅。在旁人看来,就像他在同时做四五道菜。这就是并发
  • 你需要学习的关键点:
    • 进程 vs 线程: 进程是资源分配的单位
    • 进程状态: 就绪(Ready)、运行(Running)、阻塞(Blocked)。为什么电脑卡住了?可能是所有进程都阻塞了。
    • 进程调度 (Scheduling): 大厨先做哪道菜?是先来先服务(FIFO),还是时间片轮转(大家轮流炒一分钟)?
    • 死锁 (Deadlock): 进程A拿着酱油要醋,进程B拿着醋要酱油,谁也不让谁,系统就卡死了。
    • 进程通信 (IPC): 两个进程怎么聊天?(通过管道、消息队列、共享内存)。

进程and线程

进程是操作系统中资源分配的基本单位,代表一个正在运行的程序。线程是进程内的执行单元,共享进程的内存空间,因此线程间的通信效率比进程间通信更高。有效的进程和线程管理对实现系统的并发性和提高资源利用率至关重要。

进程生命周期包括创建、就绪、运行、等待、退出五种状态,操作系统需要管理这些状态的转换,并涉及进程上下文(执行现场)的保存和恢复

1.线程and进程的区别:

在多线程环境中,进程被定义为资源分配与保护的单位(拥有虚拟地址空间和其他资源),而线程指令执行流的单位(拥有独立的栈和执行上下文)。ucore 参考 Linux 的实现思路,将线程视为共享内存等资源的轻量级进程

2.Linux/Android 内核实现原理

  1. Android 进程管理优化: Android 的核心基于 Linux 内核。为了优化应用启动时间,Android引入了名为 Zygote 的特殊进程,它预加载常用系统库和资源,通过 fork Zygote 进程来快速创建新的应用进程。

  2. 内存与进程策略: 针对移动设备内存有限的特点,Android 采用更积极的内存管理策略,例如当系统内存不足时,low memory killer 会根据进程优先级杀死不重要的后台进程来释放内存。

  3. 进程控制块(PCB)实现: 在 ucore 等教学操作系统中,进程管理信息通过 struct proc_struct 来表示。PCB 是进程的“档案”,它记录了进程的:

    资源管理信息: 内存信息(mm)、页表基址(cr3)、内核堆栈(kstack)。

    状态信息: 进程状态(state)、运行时的执行现场(context)。

    系统调用现场: 中断帧指针(tf),用于记录进程从用户空间进入内核空间时的状态,并在返回用户空间时恢复。

内存任务

文件系统管理

输入输出设备管理