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

自己还在学习当中…以下笔记全部来自其他博主,还有自己搜集的结果


1、 操作系统的四个特性

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

       区别并行和并发:

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

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

    *理解:

           

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

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

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

       同步和异步:

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

    异步:指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。

2、进程与线程

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)事件(信号):

  通过通知操作的方式来保持多线程的同步,还可以方便的实现多线程的优先级比较的操作

原文地址:https://www.cnblogs.com/RebeccaG/p/11692514.html