操做系统-基础知识总结(一)

本身还在学习当中…如下笔记所有来自其余博主,还有本身搜集的结果多线程


 

一、 操做系统的四个特性并发

1)并发:同一时间内执行多个程序异步

       区别并行和并发:socket

    并行:两个或者多个事件在同一时刻发生,要有同时处理多个任务的能力学习

    并发:两个或者多个事件在同一时间间隔发生,要有处理多个任务的能力,不必定要同时 spa

    *理解:操作系统

           

2)共享:系统中的资源,能够被内存中,多个并发执行的进程线程共同使用。线程

3)虚拟:经过时分复用(如分时系统)以及空分复用(如虚拟系统)技术,实现把一个物理实体,虚拟为多个。设计

4)异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推动。对象

       同步和异步:

    同步:指一个进程在执行某个请求的时候,若该请求须要一段时间才能返回信息,那么这个进程将会一直等待下去,知道接收到返回信息才继续执行下去。即,按顺序执行,执行完一个才执行下一个

    异步:指进程不须要一直等下去,而是继续执行下面的操做,无论其余进程的状态。

 

二、进程与线程

2.1 概念

1)进程

  是执行中一段程序,即一旦程序被载入到内存中并准备执行,就是一个进程(一个任务)。进程是标识资源分配的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。

2)线程

  单个进程执行中的每一个任务就是一个线程。线程是进程种执行运算的最小单位。

  一个进程上能够同时建立多个线程

*理解:

*连接:https://www.liaoxuefeng.com/wiki/897692888725344/923056118147584

 

2.2 多任务概念

  操做系统的多任务:指在同一时刻运行多个程序的能力

  通常状况下的多任务:一个程序同时执行多个任务。一般,每个任务称为一个线程。

 

2.3 进程和线程的区别

1)一个线程只能属于一个进程,可是一个进程能够拥有多个线程

  多线程处理:就是运行一个进程种在同一时刻执行多个任务。

2)线程是一种轻量级的进程,与进程相比,线程给操做系统带来的侧建立、维护和管理的负担要轻,意味着线程的代价或开销比较小。

3)线程没有地址空间,线程包含在进程的地址空间中。线程上下文只包含一个堆栈、一个寄存器、一个优先权,线程文本包含在它的进程文本片断中,进程拥有的全部资源都属于线程全部的线程共享进程的内存和资源

4)同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。可是每一个线程拥有本身的栈段、寄存器的内容,栈段又叫运行时段,用来存放全部的局部变量和临时变量。

5)父和子进程使用进程间通讯机制,同一进程的线程经过读取和写入数据到进程变量来通讯。线程之间通讯更方便。

6)

 

2.4 进程的状态与转换

1)进程的状态:

  就绪(Ready)状态:线程已处于准备运行的状态,即进程得到了除处理机以外的一切所需资源,一旦获得处理机,便可运行

  执行(Running)状态:进程正在处理机上运行,在单处理机环境下,每一时刻最多只有一个进程处于执行状态

  阻塞(Block)状态:又称等待状态。进程正在等待某一事件而暂停运行。如等待某资源为可用,或等待输入/输出完成。即便处理及空闲,该进程也不能运行。

2)队列:

  就绪队列、等待(阻塞)队列

  处于就绪状态的进程,在调度程序为之分配了处理机以后便开始执行,就绪 -> 执行。

  正在执行的进程若是由于分配他的时间片已经用完,而被剥夺处理机,执行 -> 就绪。

  若是由于某种缘由导致当前的进程受阻,使之不能执行,执行 -> 阻塞。

图 进程的物种基本状态及转换

 

 

2.5 进程同步的几种机制

1)同步机制须要遵循的原则

  a. 空闲让进

  b. 忙则等待

  c. 有限等待

  d. 让权等待

2)经典的进程同步问题:生产者-消费者问题;哲学家进餐问题;读者-写者问题(?)

3)进程的同步机制【?】

  管程机制

  信号量机制

  硬件同步机制:

 

2.6 进程的通讯方式

  进程通讯就是进程间的数据交换,PV操做是低级通讯方式,高级通讯方式是指以较高效率传递大量数据的通讯方式。

  高级通讯方式能够分为:共享通讯、消息通讯、管道通讯。这三大类又可分为:管道、命名管道、信号、消息队列、共享内存、信号量以及套接字七小类,以下:

1)管道(pipe):

  管道能够用于具备亲缘关系(指父子进程关系)进程中的通讯,容许一个进程和另外一个与它有共同祖先的进程之间通讯。是一种半双工的通讯方式,数据只能单向流动

2)命名管道(named pipe):

  命名管道克服了管道没有名字的限制,所以它除了具备管道所具备的功能之外,还容许无亲缘关系进程间的通讯,一样也是半双工的通讯方式。

3)信号(signal):

  比较复杂,用于通知接受进程有某种事件发生,除了用于进程间通讯外,进程还能够发送信号给进程自己

4)消息(message)队列:

  消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。它克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

5)共享内存:

  共享内存就是映射一段能被其余进程所访问的内存,这段共享内存由一个进程建立,但多个进程均可以访问。使得多个进程能够访问同一块内存空间,是最快的可用IPC形式,也是针对其余进程间通讯方式运行效率低而专门设计的。

6)信号量(semaphore):

  信号量是一个计数器,能够用来控制多个进程对共享资源的访问,常做为一种锁机制,防止某进程正在访问共享资源时,其余进程也访问该资源。主要做为进程间以及同一进程不一样线程之间的同步手段。

7)套接字(socket):

  更为通常的进程间通讯机制,可用于不一样机器之间的进程间通讯。

 

2.7 线程同步的方式

1)临界区:

  经过对多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问

2)互斥量:

  采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,由于互斥对象只有一个,因此能够保证公共资源不会同时被多个线程访问

3)信号量:

  容许多个线程同一时刻访问同一资源,可是须要限制同一时刻访问此资源的最大线程数目

4)事件(信号):

  经过通知操做的方式来保持多线程的同步,还能够方便的实现多线程的优先级比较的操做

相关文章
相关标签/搜索