博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统(一)
阅读量:4956 次
发布时间:2019-06-12

本文共 1499 字,大约阅读时间需要 4 分钟。

操作系统

一、基本特征:

  1.并发:在一段时间能运行多个程序。

     并行:同一时刻能运行多个指令,需要硬件支持,如同多流水线或多处理器。

   操作系统通过引入进程和线程,使得程序能够并发运行。

  2.共享:系统中的资源可以被多个并发进程共同使用。

     两种共享方式:互斥共享--又称为临界资源,例如打印机,在同一时间只允许一个进程访问

          同时共享

  3.虚拟:虚拟技术把一个物理实体转换为多个逻辑实体。

   两种虚拟技术:时分复用技术--多个进程能在同一个处理器上并发执行,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。

          空分复用技术--虚拟内存,将物理内存抽象为地址空间,每个进程都有各自的地址空间。地址空间和物理内存使用页进行交换,地址空间的页并不需要全部在物理内存                 中,当使用到一个没有在物理内存的页时,执行页面置换算法,将该页置换到内存中。

  4.异步:进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。

二、基本功能

  1.进程管理 2.内存分配 3.文件管理 4.设备管理

三、系统调用

  如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。

  

  Linux 的系统调用主要有以下这些:

Task Commands
进程控制 fork(); exit(); wait();
进程通信 pipe(); shmget(); mmap();
文件操作 open(); read(); write();
设备操作 ioctl(); read(); write();
信息维护 getpid(); alarm(); sleep();
安全

chmod(); umask(); chown();

    

四、大内核和微内核

  1.大内核:是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。

  2.微内核:由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。

在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。

 

五、中断分类

  1.外中断:由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。

  2.异常:由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。

  3.陷入:在用户程序中使用系统调用。

 

进程管理

  1.进程:是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行

 

  2.线程:线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

 

转载于:https://www.cnblogs.com/tutwo/p/10127439.html

你可能感兴趣的文章
Boosting(提升方法)之AdaBoost
查看>>
链接元素<a>
查看>>
Binding object to winForm controller through VS2010 Designer(通过VS2010设计器将对象绑定到winForm控件上)...
查看>>
Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
查看>>
第二章:webdriver 控制浏览器窗口大小
查看>>
【动态规划】流水作业调度问题与Johnson法则
查看>>
Python&Selenium&Unittest&BeautifuReport 自动化测试并生成HTML自动化测试报告
查看>>
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>