菜鸟笔记
提升您的技术认知

操作系统笔记

进程,线程,协程与并行,并发进程线程协程的区别死锁进程,线程,多线程i++的线程安全性同步和异步孤儿进程和僵尸进程/proc进程信息linux中的分段和分页互斥量 mutex线程进程间通信进程创建进程优先级进程的基础知识进程与线程的区别(面试题)线程的控制(创建,终止,等待,分离)可重入 VS 线程安全死锁的概念一级缓存和二级缓存的理解一句话解说内存屏障 Memory barrierbrk(), sbrk() 用法详解malloc/free函数的简单实现一文讲透 “进程、线程、协程”Linux进程状态线程池的陷阱linux内核学习之进程和线程进程与线程的区别和联系内存寻址linux IO子系统和文件系统读写流程Page cache和buffer cache的区别与联系漫谈linux文件IO多线程和多进程的区别内存泄漏字节、字、位、比特的概念和关系如何避免死锁ANSI是什么编码?CPU寻址范围(寻址空间)CPU 使用率低高负载的原因创建多少个线程合适操作系统下spinlock锁解析、模拟及损耗分析线程堆栈堆和栈的内存分配堆和栈的概念和区别堆和栈的区别,申请方式,程序的内存分配什么是 POD 数据类型Linux内存分配小结--malloc、brk、mmap系统调用与内存管理(sbrk、brk、mmap、munmap)进程描述和控制CPU执行程序的原理编译的基本概念Linux虚拟地址空间布局一个程序从源代码到可执行程序的过程程序的运行机制——CPU、内存、指令的那些事分页内存管理——虚拟地址到物理地址的转换深刻理解Linux进程间通信fork之后父子进程的内存关系fork之后,子进程继承了父进程哪些内容关于协程及其锁的一些认识对协程的一点理解std::thread join和detach区别CAS和ABA问题CAS算法锁和无锁无锁队列的实现Lock-Free 编程锁开销优化以及CAS进程、线程和协程之间的区别和联系多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)Linux 原来是这么管理内存的线程上下文切换怎么玩儿进程和线程通信原理CPU密集型 和 IO密集型cas原理以及Atomic原子类分析改变线程状态的八个方法六种进程间通信方式进程和线程的区别系统调用进程的概念linux共享内存进程间通讯方式进程的调度线程同步的方式mmap和shm 区别

进程的概念

阅读 : 146

进程(Process)

定义

进程是操作系统中正在运行的程序的一个实例。它是系统进行资源分配和调度的基本单位,包含程序代码、数据和执行状态等信息。

关键特性

  • 独立性:每个进程拥有独立的地址空间和资源。
  • 动态性:进程有生命周期(创建、运行、终止)。
  • 并发性:多个进程可并发执行(通过 CPU 时间片轮转)。

进程的组成

组成部分 说明
代码段 存储可执行的程序指令(即程序的二进制代码)。
数据段 存储全局变量和静态变量。
堆(Heap) 动态分配的内存区域(如 malloc()new 分配的变量)。
栈(Stack) 存储函数调用时的局部变量和返回地址。
PCB 进程控制块(Process Control Block),记录进程的元数据和状态。

PCB 内容示例

struct PCB {
    int pid;            // 进程 ID
    int status;         // 状态(运行/就绪/阻塞等)
    int priority;       // 优先级
    void *code_ptr;     // 程序计数器(指向下一条指令)
    // ... 其他信息(寄存器值、内存分配、打开文件列表等)
};

进程的状态

  • 创建(New):进程正在被创建。

  • 就绪(Ready):进程已获得所需资源,等待 CPU 时间。

  • 运行(Running):进程正在 CPU 上执行。

  • 阻塞(Blocked):进程因等待事件(如 I/O)暂停运行。

  • 终止(Terminated):进程执行完毕或被强制结束。

进程调度

  • 操作系统通过调度算法决定哪个进程获得 CPU 时间,常见算法包括:

  • 先来先服务(FCFS)

  • 短作业优先(SJF)

  • 时间片轮转(Round Robin)

  • 多级反馈队列(Multilevel Feedback Queue)

进程创建与终止

  • 创建方式:

    • 系统初始化时创建(如守护进程)。

    • 通过 fork() 复制现有进程(常见于 Linux)。

    • 用户请求创建(如双击运行程序)。

  • 终止方式:

    • 正常退出(执行完毕)。

    • 错误退出(如段错误)。

    • 被其他进程强制终止(如 kill -9 PID)。

进程间通信(IPC)

进程间通过以下机制交换数据:

  • 管道(Pipe)

  • 消息队列(Message Queue)

  • 共享内存(Shared Memory)

  • 信号(Signal)

  • 套接字(Socket)

进程 vs 线程

特性 进程 线程
资源占用 独立内存空间,开销大 共享进程资源,开销小
通信方式 IPC 机制(如管道) 直接读写共享内存
崩溃影响 不影响其他进程 可能导致整个进程终止
切换成本 高(需切换地址空间)