zoukankan      html  css  js  c++  java
  • 操作系统-基础知识总结(一)

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


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

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

  • 相关阅读:
    JavaScript操作符instanceof揭秘
    Linux打开txt文件乱码的解决方法
    Working copy locked run svn cleanup not work
    poj 2299 UltraQuickSort 归并排序求解逆序对
    poj 2312 Battle City 优先队列+bfs 或 记忆化广搜
    poj2352 stars 树状数组
    poj 2286 The Rotation Game 迭代加深
    hdu 1800 Flying to the Mars
    poj 3038 Children of the Candy Corn bfs dfs
    hdu 1983 Kaitou Kid The Phantom Thief (2) DFS + BFS
  • 原文地址:https://www.cnblogs.com/RebeccaG/p/11692514.html
Copyright © 2011-2022 走看看