操作系统基础概念整理
程序员文章站
2022-07-04 22:11:59
...
1、线程和进程
进程是计算机程序关于某数据集合的一次运行活动,是系统进行资源分配和系统调度的基本单位。进程是程序的实体
线程是程序执行流的最小单元,一个标准线程由线程ID,当前指令指针PC,寄存器集合,堆栈组成。另外,线程是进程的一个实体,是系统独立调度和分配的基本单位。
1.1 同步和互斥
同步:同步就是协同步调,按预定的先后次序进行运行。
互斥:某些资源 不能同时被多个进程使用,例如打印机
线程同步的几种方式:(类似FreeRTOS中的任务通信)
1、临界区:
CcriticalSection g_CriticalSection;//定义临界区对象 g_CriticalSection.Lock()//在访问共享资源(代码或变量)之前,先获得临界区对象, g_CriticalSection.Unlock();//访问共享资源后,则放弃临界区对象,
如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
2、事件:
事件机制,则允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。
3、互斥量
互斥对象和临界区对象非常相似,只是其允许在进程间使用,而临界区只限制与同一进程的各个线程之间使用,
但是更节省资源,更有效率。
4、信号量
当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象。CSemaphore类对象保存了对当前访问某一个指定资源的线程的计数值,该计数值是当前还可以使用该资源的线程数目。
其他类似的还有读写锁,条件变量,自旋锁。
进程同步的几种方式:
- 管道(有名,无名)
- 消息队列
- 临界区
- 共享内存
- 信号量
- 套接字
上一篇: PHP crypt()函数的用法讲解
下一篇: 单人版五子棋