操作系统总结

五大功能和四种资源、及进程1-5、及cpu切换的三种情况

操作系统的五大功能和四种资源: 进程管理、存储管理、作业管理、文件管理、设备管理 处理器资源、存储器资源、IO设备资源、文件资源

一、进程管理:为什么需要进程?

  1. 进程的五种状态:创建、就绪、阻塞、执行、终止,每一个就是一个队列,分配pcb之后就会放入就绪队列。top命令可以看到的进程状态:R S D(io等待) T Z
  2. 进程的实体,进程在内存中的实体: pcb(称为进程控制块)是进程实体的一部分,存放进程的管理和控制信息的数据结构,是操作系统中最重要的数据结构。每一个进程均有一个PCB(Process Control Block) pcb里面的内容有:进程标识符、状态、上下文数据、优先级、io状态信息、程序计数器、内存指针。pcb存放在系统专门开辟的pcb区域内;
  3. 进程调度算法:轮询、优先权、先来先调度(队列的方式) 通过决策决定哪个就绪进程先获得cpu使用权,进程调度分为非抢占式和抢占式(允许一定的策略暂停当前允许的进行) 4、进程的内存管理 内存管理三种方式:页式、段式、段页式存储管理,现在使用的就是段页式存储管理 页式存储管理:分页可以有效提交内存利用率。页表记录了页面和块的映射关系;进程的逻辑空间分成n个大小的页面,页面大小和物理内存的物理块对应。按页面把进程的空间放进物理内存对应的块中;页面大小通常是1-8k; 分页系统:寻找页面,32位寻址空间和物理空间的对应关系是页表,规定页面的大小4kb; 5、多进程间的同步根源是彼此之间通讯 进程同步:共享内存、信号量、消息队列,socket 线程同步:互斥量、条件变量、读写锁、自旋锁

段式存储管理:将进程的逻辑页面划分成若干段,分段可以更好满足用户需求;

段页式存储管理: 将页面按段式管理分成若干个段,再把段内空间按页式管理等分成若干页;结合两个地址来形成一个地址,段内页号和页内地址; 内存分配的两种数据结构:空闲表和空闲链表;

二、存储管理

swap交换空间和虚拟空间 虚拟内存是内存管理最关键的技术,发现缺页中断,就会发起页面置换,虚拟内存置换算法有(lru/lfu/fifo) 虚拟内存置换的策略分为两种:寄存器到内存,内存到磁盘;一个解决速度问题,一个是解决容量; buddy算法解决内存外碎片的问题,内存碎片分为内部碎片和外部碎片;

交换空间是磁盘的一个分区,是系统初始化时配置的,存于磁盘,为了解决内存不足的问题; 两个的区别的一个是基于内存,一个是基于操作系统的;原理都是把内存的一部分数据暂时放在磁盘里面;

没有配置os之前,资源属于当前运行的程序 合理的隔离资源、运行环境,提高资源利用率 进程作为程序独立运行的载体保障程序正常执行;

三、文件管理,

文件系统 文件类型分为:普通文件、目录文件、符号链接、设备文件、套接字 文件系统有:fat/ntfs/ext

四、设备管理

  1. io设备:磁盘(快设备),打印机、shell终端(字符设备)。对cpu而言,凡事对cpu进行数据输入和输出的都是io设备;
  2. 网络设备,计算机的网络 OSI七层模型和TCP/IP四层模型,根据OSI七层模型中的最下面三层来分析网络数据的封装过程: 网络层:ip协议解决了在虚拟网络中数据传输路径的问题。arp协议:是网络层和数据链路层配合使用的一个重要协议,是tcp/ip协议栈里面的基础协议,直接封装到数据链路层的数据帧里面的,arp地址解析协议Address Resolution protocol;

数据链路层:以太网协议(ethernet)是一种应用于数据链路层的协议,可以完成相邻设备的数据帧传输;数据链路层只能解决相邻物理节点的数据传输,跨节点的需要网络传输;

物理层只管传输比特流,无法控制是否出错,数据链路层负责传输错误检测;

mac地址,物理地址/硬件地址,mac地址共48位,使用16进制表示,ip地址的长度为32位,是点分十进制 mac地址表是路由器所拥有的;每一个网卡都有一个mac地址;有了mac地址就可以进行数据帧的传输了; mac地址表和网络接口:计算机通过网卡发送数据帧,数据帧到达路由器,路由器取前6个字节来匹配mac地址表,找到对应的网络接口;

icmp协议的两个功能:询问报文、报告错误信息和异常情况,ping用的就是icmp协议。icmp协议是封装到ip数据报里面的;

ip数据报: ip头部20个字节用来表示数据类型,mtu也在包头上,有四行,下面的行就是数据了; ttl避免数据在网络中无限传输:ttl表示ip数据报在网络总的寿命,每经过一个设备,ttl减1,为0将被网络设备丢弃;

帧是数据链路层数据的基本单元,帧的首部和尾部是特定的控制字符,以太网对数据帧的长度限制在1500字节;

MTU最大传输单元(Maximum Transmission Unit) 包或帧的最大长度,一般以字节记。协议一定要在包(或帧)上加上包头;

计算机网络的性能指标:RTT(Route-Trip Time)表示的是数据报文传输一个来回的时间,用PING命令查看rtt;

操作系统的相关概念(了解就行) 并发性 共享性、 虚拟性:把一个物理实体(真实存在)转变成若干个逻辑实体(虚拟的),每个程序占用一个逻辑设备。虚拟技术主要用到时分复用技术和空分复用技术;资源在时间上进行复用,提高资源利用率 异步性:进程以不可预知的速度向前推进;

操作系统是管理计算机硬件和软件资源的计算机程序

五、CPU 的上下文切换分为这三种场景:

  1. 进程上下文切换:Linux 按照特权等级,从用户态到内核态的转变,需要通过系统调用来完成,比如一个用户程序查看文件内容就需要多次系统调用来完;系统调用的过程也有CPU上下文的切换,系统调用结束后,CPU 寄存器需要恢复原来保存的用户态,然后再切换到用户空间,继续运行进程。所以,一次系统调用的过程,其实是发生了两次 CPU 上下文切换。

  2. 线程上下文切换:同一个进程内存的线程因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据。

  3. 中断上下文切换:为了快速响应硬件的事件,中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件,在打断其他进程时,就需要将进程当前的状态保存下来;中断上下文切换并不会与进程上下文切换同时发生。大部分中断处理程序都短小精悍,以便尽可能快的执行结束;硬件通过触发信号,也会导致中断处理程序的调用,也是一种常见的任务;

一个进程在运行时就有进程运行空间和内核空间的CPU上下文切换。操作系统管理的任务包括:进程、线程、硬件触发信号这三种,

  1. 进程在这五种时候会被调度到 CPU 上运行: a、某个进程的时间片耗尽了,就会被系统挂,CPU 时间被划分为一段段的时间片 b、进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行; c、进程通过睡眠函数 sleep 这样的方法将自己主动挂起时 d、有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起, e、发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序。

用户态和内核态:进程的运行空间分为内核空间和用户空间,进程在用户空间运行时,被称为进程的用户态,而进入内核空间的时候,被称为进程的内核态。

硬中断和软中断 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求) https://www.cnblogs.com/bluestorm/p/8923838.html

Go 语言这种在用户态重造执行体和 IO 子系统:协程不走系统调用,协程切换只是寄存器的保存和恢复,所以可以在用户态下自己来实现; 进程是操作系统调度,协程用户态自己来调度

2个核却有4个CPU:使用了超线程技术–双核四线程 对普通进程来说,它能看到的其实是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理内存 进程的虚拟地址空间比物理内存大很多,Linux提供了一系列的机制应对内存不足的问题,如缓存的回收(lru)、交换分区 Swap 以及 OOM 等

内存中的buffer和cache的区别:Buffer(缓存磁盘)、Cache(缓存文件系统)的读写数据; Buffer 和 Cache 的设计目的,是为了提升系统的 I/O 性能。它们利用内存,充当起慢速磁盘与快速 CPU 之间的桥梁,可以加速 I/O 的访问速度 Buffers 和 Cache 都是操作系统来管理的,应用程序并不能直接控制这些缓存的内容和生命周期。

一些很有技巧的命令 sed 和 awk、很神奇的正则表达式、灵活的管道和 grep

版权

本作品采用 CC BY-NC-ND 4.0 授权,转载必须注明作者和本文链接。

上一篇:数据库性能优化
下一篇:shell的一些笔记