欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

操作系统基础概念整理

程序员文章站 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类对象保存了对当前访问某一个指定资源的线程的计数值,该计数值是当前还可以使用该资源的线程数目。

其他类似的还有读写锁条件变量自旋锁

进程同步的几种方式:

  • 管道(有名,无名)
  • 消息队列
  • 临界区
  • 共享内存
  • 信号量
  • 套接字