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


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


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

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

  • 相关阅读:
    VS2010版快捷键
    Win7旗舰版中的IIS配置asp.net的运行环境
    实现软件自动在线升级的原理
    view_countInfo
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    error: 40
    SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
    继承实现圆柱体面积体积的计算
    圆柱模板价格计算器V1.0版本
    python3.7内置函数整理笔记
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11692514.html
Copyright © 2020-2023  润新知