操作系统基础知识

1、进程和线程

进程:并发执行的程序,在执行过程中分配和管理资源额基本单位,是一个动态概念,竞争计算机系统资源的基本单位

线程:线程是进程的一个执行单元,是进程内部的调度实体。是比进程更小的独立运行的基本单位。线程也是轻量级进程。

一个程序至少一个进程,一个进程至少一个线程。

线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。

线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因为同⼀进程中的线程极有可能会相互影响。

线程执⾏开销⼩,但不利于资源的管理和保护;⽽进程正相反。

2、什么是协程

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。

协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方。

在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。进程线程都是同步机制,而协程则是异步。协程不需要多线程的锁机制。

3、进程的状态

创建状态:进程正在被创建,尚未达到就绪状态

就绪状态:进程已经处于准备运行状态,进程获得了除了处理器之外的一切所需资源,只要得到处理器资源(处理器分配的时间片)即可运行

运行状态:进程在处理器上正在运行(单个处理器上任何时刻只有一个进程在运行)

阻塞状态:等待状态,进程在等待某一个事件而暂停运行(比如:等待某资源为可用,或等待IO操作完成)即便处理器空闲,该进程也不能运行。

结束状态:进程正在从系统中消失,进程正常结束or其他原因中断退出运行。

4、进程间的通信方式

1. 管道/匿名管道(Pipes) :⽤于具有亲缘关系的⽗⼦进程间或者兄弟进程之间的通信。

2. 有名管道(Names Pipes) : 匿名管道由于没有名字,只能⽤于亲缘关系的进程间通信。为了克服 这个缺点,提出了有名管道。有名管道严格遵循先进先出(first in first out)。有名管道以磁 盘⽂件的⽅式存在,可以实现本机任意两个进程通信。

3. 信号(Signal) :信号是⼀种⽐᫾复杂的通信⽅式,⽤于通知接收进程某个事件已经发⽣;

4. 消息队列(Message Queuing) :消息队列是消息的链表,具有特定的格式,存放在内存中并由消息 队列标识符标识。管道和消息队列的通信数据都是先进先出的原则。与管道(⽆名管道:只存在 于内存中的⽂件;命名管道:存在于实际的磁盘介质或者⽂件系统)不同的是消息队列存放在内 核中,只有在内核重启(即,操作系统重启)或者显示地删除⼀个消息队列时,该消息队列才会被 真正的删除。消息队列可以实现消息的随机查询,消息不⼀定要以先进先出的次序读取,也可以按 消息的类型读取.⽐ FIFO 更有优势。消息队列克服了信号承载信息量少,管道只能承载⽆格式 字 节流以及缓冲区⼤⼩受限等缺。

5. 信号量(Semaphores) :信号量是⼀个计数器,⽤于多进程对共享数据的访问,信号量的意图在 于进程间同步。这种通信⽅式主要⽤于解决与同步相关的问题并避免竞争条件。

6. 共享内存(Shared memory) :使得多个进程可以访问同⼀块内存空间,不同进程可以及时看到对 ⽅进程中对共享内存中数据的更新。这种⽅式需要依靠某种同步操作,如互斥锁和信号量等。可 以说这是最有⽤的进程间通信⽅式。

7. 套接字(Sockets) : 此⽅法主要⽤于在客户端和服务器之间通过⽹络进⾏通信。套接字是⽀持 TCP/IP 的⽹络通信的基本操作单元,可以看做是不同主机之间的进程进⾏双向通信的端点,简 单的说就是通信的两⽅的⼀种约定,⽤套接字中的相关函数来完成通信过程。

5、线程间的同步方式:

线程同步是两个或多个共享关键资源的线程的并发执⾏。应该同步线程以避免关键的资源使 ⽤冲突。操作系统⼀般有下⾯三种线程同步的⽅式:

1. 互斥量(Mutex):采⽤互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为 互斥对象只有⼀个,所以可以保证公共资源不会被多个线程同时访问。⽐如 Java 中的 synchronized 关键词和各种 Lock 都是这种机制。

2. 信号量(Semphares) :它允许同⼀时刻多个线程访问同⼀资源,但是需要控制同⼀时刻访问此资 源的最⼤线程数量

3. 事件(Event) :Wait/Notify:通过通知操作的⽅式来保持多线程同步,还可以⽅便的实现多线程优先级的比较

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值