2.Processes & Concurrency
Operating System / Linux · 7 篇笔记
- 2.1 线程historical
1. 什么是线程 进程内的执行流 线程是进程的执行流。多线程指进程有多个执行流。 如果线程是在user level实现的,那么叫做用户态线程。如果是在kernel level实现的,那么叫做内核级线程。区别在于前者内核无法感知到线程的运行。 在Linux中,用的是内核级线程(LWP)。每个线程在内核
- 2.2 进程historical
1. 进程 进程可以看作一个执行中的程序 使用ps aux可以查看进程 使用fork调用可以创建一个新的进程。创建出来的child进程和parent进程共享所有的segment:如text、stack、heap等,当child进程修改stack或heap的时候才会复制独有的一份stack和heap
- 2.4 IPChistorical
1. 什么是进程通信 就是进程之间进行信息交换。 2. 为什么有进程通信 由于每个进程的地址空间都是独立的,操作系统为了安全起见不允许一个进程直接访问另一个进程的地址空间 3. 进程通信方式 3.1. 信号量 - 计数器。用于为多个进程提供对共享数据对象的访问 3.2. 共享存储 - 多个进程共享同
- 2.5 同步historical
1. 同步和互斥 1.1. 同步 多个进程按一定顺序执行 1.2. 互斥 多个进程在同一时刻只有一个进程能进入临界区 1.2.1. 临界区 访问同一个资源的代码叫做临界区 2. 同步的方式 2.1. 信号量 一个整形变量,可以执行down和up操作 - down:如果信号量大于 0 ,执行 -1 操
- 2.6 死锁historical
1. 死锁是什么 A占有了锁1,需要锁2,B占有了锁2,需要锁1 2. 死锁的必要条件 - 互斥:资源不可共享,即同一时间我占有了这个资源你就不能占有 - 占有和等待:我占有了资源A之后,还想去占有资源B - 不可抢占:此刻我占有了这个资源,你就不能抢占 - 循环等待:我占有了资源A等待资源B,你占
- 2.7 程序、进程、线程historical
1. 是什么 程序是指令的集合,存放在硬盘上,是个静态的实体 进程指程序加载到内存,由CPU执行指令,是个动态的实体 线程是进程内的多个执行流 举例: 比如一个视频播放器,安装完后躺在硬盘上,此时就是一堆指令+数据; 播放一个视频的时候这个程序首先加载到内存中,由CPU读取指令并执行 一个视频既有画