Shell

  1. Shell是操作系统与用户交互的界面。表现为通过控制台执行用户命令。本身不执行命令,仅仅是组织和管理命令。
  2. 脚本:类似程序的方式执行一系列的逻辑顺序的命令序列完成复杂的功能和人机交互。保存在文件中,是shell命令的集合。

系统调用

  1. 定义:操作系统内核为应用程序提供的服务/函数
  2. 特点:
    • 一般涉及核心操作和硬件资源
    • 运行于核态
    • 函数具有唯一ID
    • 产生中断,且为自愿中断

进程管理

  1. 定义:是程序在某个数据集合上的一次运行活动。程序的一次运行即为一个进程。
  2. 特性:
    • 动态性
    • 并发性
    • 异步性
    • 独立性
  3. 分类:
    按使用资源权限

    • 系统进程:系统内核相关进程
    • 用户进程:运行于用户态的进程
      按对CPU依赖性
    • 偏CPU进程:计算型
    • 偏I/O进程:
  4. 进程状态
    • 就绪态:获得了除CPU之外所有资源,通常有多个进程处于就绪态,有一个就绪队列。
    • 运行态:获得CPU,正在运行
    • 等待态:

进程控制块

进程由程序、数据、进程控制块组成。
进程控制块是描述和管理进程的一种数据结构,包括以下内容:

  • 进程描述信息
  • 控制和调度信息
  • 资源信息
  • 现场信息

进程互斥和同步

  1. 同步:进程通过协作共同完成同一任务而造成的直接制约关系,如生产者-消费者模式
  2. 互斥:进程间竞争系统资源而造成的间接制约关系,同一时间内只有一个进程可以访问系统资源。
  3. 临界资源和临界区
    • 临界资源:同一时间只能有一个进程访问的资源
    • 临界区:进程访问临界资源的程序片段
  4. 实现同步互斥的方法:原子操作、锁、信号量。
  5. 信号量同步机制
    • 信号量是一种特殊的变量,只能被两种操作修改,即P、V操作。
    • P操作:s=s-1;if(s < 0) block();一个进程获得资源访问权,s-1,当s小于0时说明资源不能再被更多进程访问了,会将进程变为等待状态,加入等待队列。P操作用于申请资源。
    • V操作:s=s+1;if(s<=0) wakeup();一个进程释放了该资源的访问,此时会唤醒一个正在等待的进程。如果s大于0则表示没有进程等待该资源。V操作用于释放资源。
  6. P、V操作实现互斥
    • 将信号量s值设为1,表示同一时间只有一个进程能使用资源。
  7. P、V操作实现同步
    • 使用两个信号量表示缓冲区的读写,实现生产者-消费者模式。
  8. 死锁
    • 通俗来讲死锁就是进程1先占用了A资源,申请B资源,而进程2先占有了B资源,申请A资源,这样就会造成两个进程都在等待对方已占用的资源而一直循环下去的情况。
    • 死锁产生条件:
(1)资源互斥,同一时间只有一个进程能访问
(2)资源不可剥夺,除非进程主动放弃
(3)资源的保持和请求,进程在占有某一资源后还能申请其他资源
(4)对资源的循环等待。
  • 死锁解决:破坏上述四个条件之一即可。
(1)预防:即对资源进行适当的限制
(2)检测:在运行过程中随时检测死锁条件,并设法避开
(3)恢复:发生死锁后以最小代价退出死锁状态。

通常预防会使得程序运行效率降低,无法充分利用资源。检测则会耗费大量的系统开销,效率低。一般系统都采用恢复措施。Linux系统也可能会发生死锁现象,但是概率极低,因此系统采用“鸵鸟策略”,并不去检测和解除死锁,而是忽略。

进程通信

进程有自己独立的地址空间,因此进程间需要交换数据时需要通过某种手段,这就是进程通信。

  1. 通信方式:信号量、信号、管道、共享内存、消息

    • 高级通信:消息、管道、共享内存。可以传递大量数据
    • 低级通信:信号量、信号。只能传递少量数据。
    • 同步通信:管道、共享内存。通信双方需要共同参与到整个通信过程中,步调协调地完成数据交换。如同打电话一样,双方必须同时在线,即时交谈。
    • 异步通信:信号量、信号、消息。双方进程不用考虑对方进程,发完或者接受完数据就好。如同发邮件,不必关心对方是何时接收。
  2. 信号量:
  3. 信号: 进程间可以发送控制信息,一般只有几个字节数据,通知进程某个事件发生。
  4. 管道:两个进程之间数据传输通道,一个发,一个接,同步的传递字节流。管道是通过文件系统实现的。Linux将管道看做是一种特殊的文件系统,而实际上它是一个虚拟文件的形式实现内存高速缓存区。管道文件建立后由两个进程共享,一个写,一个读。
  5. 消息队列:消息是结构化的数据。
  6. 共享内存:在内存中开辟一个进程共享的存储段,将这个区间映射到不同进程的地址空间中。一旦涉及到共享就要考虑同步问题,保证共享数据的安全性,因此实现较为复杂。

线程

  1. 为什么需要线程?
    进程可以并发执行,但是进程内最是串行执行的,没能充分利用CPU资源。此外,进程的创建和切换对于资源的开销都比较大,影响了系统的整体效率。为了提高系统运行的效率,提出了线程这个概念。
  2. 进程和线程比较
    • 资源分配方面:进程是资源分配的最小单位,每一个进程都有自己独立的地址空间,以及相关的资源。而线程则共享进程内的地址空间和资源。因此进程的建立开销较大。
    • CPU调度方面:线程是CPU调度的最小单位。进程在切换时,需要保存现场,即整个进程的运行环境,需要的开销较大。而线程的切换则只需要保存少量寄存器,开销小,因而切换速度快。
    • 通信方面:由于进程有自己独立的地址空间,其他进程无法访问,因此通信需要系统提供的进程通信机制完成。而线程共享进程内的资源,通信较为简单。
  3. Linux线程
    • Linux线程实现较为独特,它没有专门的线程概念,实际上是把线程当做进程来处理的,只不过该进程要和其他进程共享地址空间等资源。因此Linux线程也称为“轻量级进程”(LWP)。
    • 创建线程有clone()函数完成,于fork函数不同的是,它需要指定共享的资源。

转载于:https://www.cnblogs.com/heyyw1119/p/10952943.html

计算机操作系统基础知识-2相关推荐

  1. 计算机的基础操作知识试题,[计算机基本操作知识]计算机操作系统基础知识试题...

    计算机操作系统是电子计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,那么你对计算机操作系统了解多少呢?以下是由答 案 网 ZqNF.Com小编整理关于计算机操作系统基础知识试题的内容, ...

  2. 计算机操作系统--基础知识

    文章目录 前言 一.操作系统的定义和功能 二.计算机系统的结构 1.计算机系统包括: 2.操作系统做什么 三.操作系统的类型 1.批量操作系统 1.批处理操作系统的缺点 2.多程序操作系统 3.多处理 ...

  3. 计算机操作系统基础知识总结

    进程与线程的区别 进程:一个正在执行程序的实例,它有程序.输入.输出以及状态. (程序:用适当形式描述的算法) 线程:运行在进程上下文中的逻辑流 所有的线程都有完全一样的地址空间,共享相同的全局变量, ...

  4. 计算机和操作系统基础知识

    -----------------------siwuxie095 计算机和操作系统基础知识 1.操作系统(Operating System,简称 OS),是管理计算机硬件与 软件资源的计算机程序,同 ...

  5. 计算机的指令合成为,第二章计算机操作基础知识doc

    第二章计算机操作基础知识doc (29页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 23.9 积分 第二章  计算机操作基础知识第一节  计算机基础知识 ...

  6. 广东省职称计算机职称考试试题及答案,职称计算机考试基础知识章节试题及答案一...

    职称计算机考试基础知识章节试题及答案一 分类:职称计算机 | 更新时间:2016-07-07| 来源:中华网教育 第一章 ________决定计算机的运算精度. A.主频 B.字长 C.内存容量 D. ...

  7. 笔记:计算机公共基础知识学习内容(总)——全国计算机二级考试

    计算机公共基础知识 1. 计算机系统组成 计算机系统分为 硬件系统 实实在在的硬件,是计算机工作的基础. 软件系统(核心) 指挥计算机工作的各种程序的集合. – 计算机硬件系统 硬件是机械装置和电子线 ...

  8. Notes 20180505 : 计算机的基础知识

    总是想要去深入了解一下计算机,可真正去了解的时候才发现那并非一日之功,关于计算机的学习,并未放弃,但是化知识为笔记尚需时日,今日我们先简单了解一下计算机,然后开始Java语言的学习. 1 计算机的基础 ...

  9. 计算机的基础操作知识试题,计算机操作基础知识试题(220道)

    计算机操作基础知识试题(220道) (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机操作基础知识试题(220道)一.单选题( ...

最新文章

  1. ReSimNet: drug response similarity prediction using Siamese neural networks
  2. 【背包】作业(jzoj 1986)
  3. 【XML】Java对象数据的XML和JSON表示
  4. Linux——Linux下的tar压缩解压缩命令详解
  5. Keras同时用多张显卡训练网络
  6. 多线程之任务: Task 基础, 多任务并行执行, 并行运算(Parallel)
  7. 【数据库原理实验(openGauss)】金融场景化实验
  8. 计算机联锁接口,计算机联锁接口设计规范.doc
  9. HTTP长连接和Websocket
  10. 批量删除多个 PPT 空白页
  11. python股票量化交易入门到实践_Python股票量化交易从入门到实践
  12. vi设计手册的编辑形式
  13. I2C通讯常见问题汇总
  14. 计算机wifi无法打开,教你win10系统WiFi热点无法打开的修复教程
  15. 文件怎么批量全部打印出来,网上打印文件怎么操作
  16. MT7628平台编程设计指南资料
  17. WMS LICENSE PLATE NUMBERS LPN CONTEXT
  18. 技法の穴をふさぐ:工数編 --技法の穴をふさぐ:工数編
  19. 灰色马尔科夫预测 matlab代码(数据量太少,有局限性)
  20. 根据LocalDate或者DateUtils计算两个日期之间的天数差

热门文章

  1. git连接jenkins_基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!
  2. 单片机检测stc没反应_STC 核心板 入门记 - 你好我叫郑某人
  3. debian php redis,debian7.7环境下 源码安装redis以及phpredis扩展
  4. html读取字典endfor,Flask和HTML,从python字典迭代到HTML表
  5. 长沙网络推广浅析如何增加网站的蜘蛛爬取频次?
  6. 网络推广软件介绍外链坚持七大原则助力网站排名“蹭蹭上涨”!
  7. 优化网站设计方案提升网站用户回头率
  8. mysql数据库建站教程视频_Mysql数据库零基础到精通视频教程(共6天)
  9. java 找不到工程文件_类加载器找不到文件求帮助
  10. 如何查看笔记本电脑配置参数_2020双十一(小白/学生)如何选购笔记本电脑?5000元预算哪款笔记本配置值得入手?...