进程,线程
- 进程是具有独立功能程序在某个数据集合上的一次执行过程。
- 线程是进程内的一个执行实体或执行单元。
区别:
- 不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。
- 进程是系统进行资源分配和调度的一个独立单位。线程是进程内的一个执行单元,是CPU调度和分派的基本单位。资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。
进程的三种状态之间的转换
进程通信方式
- 管道
- 消息队列,消息队列是用创建文件的方式建立的,保存的数据不会消失!!
- 信号量,Semaphore
- 共享内存
- 套接字,Socket
线程同步方式
- 临界区
- 互斥量
- 信号量,Semaphore
- 事件,Event
Linux常用命令
基础:date,cal,bc,man,
目录:ls,cd,pwd,mkdir,rmdir,
文件:rm,cp,mv,
读取文件内容:cat,less,more,head,tail,
更改文件的属性:chgrp,chown,chmod
其中 chmod能改变文件属性
- chmod u+rw aaa.txt 给aaa.txt添加读写属性
- chmod 777 bbb 给bbb添加rwx读写运行三种权限
临界区
每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。
- 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;
- 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
- 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区;
- 如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
死锁
在两个或多个并发进程中,如果每个进程都占用了一定的资源但是又都等待别的进程释放它们现在保持着的资源不能向前推进,称这一组进程产生了死锁。
产生死锁的根本原因是资源分配不当和资源数量不足
必要条件:
- 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
- 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
- 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
- 循环等待条件(Circular wait):系统中若干进程组成环路,改环路中每个进程都在等待相邻进程正占用的资源。
死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。
页式管理
页式管理的基本原理是什么?
(1)进程的虚拟空间被划分成长度相等的页。
(2)内存空间也按页的大小划分成长度相等的页面。
(3)采用请求调页或预调技术实现内外存储器的统一管理。
分页和分段
页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。
段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。
分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址