《操作系统》知识框架梳理 – Vajuw's blog 搭建ing – 个人学习笔记、随想、成长

您所在的位置:网站首页 windows使用什么管理硬件资源 《操作系统》知识框架梳理 – Vajuw's blog 搭建ing – 个人学习笔记、随想、成长

《操作系统》知识框架梳理 – Vajuw's blog 搭建ing – 个人学习笔记、随想、成长

#《操作系统》知识框架梳理 – Vajuw's blog 搭建ing – 个人学习笔记、随想、成长| 来源: 网络整理| 查看: 265

2020年12月下旬,学习了计算机四大基础课程之一的《操作系统》,主要用到的资料是B站上的视频:王道考研,以及一些参考博客链接:

https://www.cnblogs.com/cxuanBlog/p/13297199.html

[Toc]

引论 什么是操作系统?

定义:

操作系统是一组==控制和管理计算机硬件和软件资源、合理地对各类资源进行管理的软件系统==(口语化:基于现有的硬件基础,安装一层软件,软件可以根据用户数的指令达到控制硬件的效果,从而满足用户的需求)

key word:计算机上运行的最重要的软件;管理着计算机的内存、进程、所有硬件、软件;协调cpu、内存、存储器等,确保每个程序获得它所需要的资源。

计算机硬件的重要组成部分:运算器、控制器、存储器、输入设备、输出设备

CPU有两种状态:内核态(特权指令)+用户态 (非特权指令)

操作系统提供的抽象模型:

文件:对I/O设备的抽象 虚拟内存:对程序存储器的抽象 进程:对正在运行程序的抽象 虚拟机:对整个操作系统的抽象

需要思考的几个问题?

操作系统是如何工作的?【os运行在内核态】 如何有效的解决并发问题? ……

==os的特征==

并发性 共享性 虚拟性 异步性

功能和目标

方便用户与计算机硬件之间的通信 提供用户图像界面 。。。。 一些概念 中断/异常机制: CPU暂停当前执行程序,保留现场,硬件自动转去处理程序,处理完后回到断点,继续执行被打断的程序。 系统调用:应用程序可以通过库函数和API进入系统调用,也可以引发系统调用,系统调用再调用对应的内核函数。 并发程序:一段时间内,单处理器上多个程序处于开始运行但未结束的状态,且次序不是事先确定的。 ==中断是唯一一个从用户态切换到内核态== 进程(process)和线程(thread) 进程

进程:os分配资源的最小单位

==一个cpu/核在一个特定时刻只能运行一个线程==,之所以会产生多个程序并行。每个进程都有自己的虚拟CPU,但实际情况是,CPU会在各个进程之间来回切换。

进程实体:程序段、数据段、PCB(process control block)

PCB:是非常重要的以一个概念,包括os对进程的基本描述信息、控制管理信息、资源分配信息。

进程控制PCB块,进程描述(PID、用户标识、进程组关系)、进程控制(状态、优先级、入口地址、队列指针)、资源和使用状况(存储空间、文件)、CPU现场(进程不执行时保存寄存器的值、指向页表的指针)

UID:表示进程的创造者

PID:进程的名字

进程队列 每类进程状态有一个或多个进程多列、队列中的元素未PCB块,进程状态改变就是换队。 进程的层次结构 unix 所有”进程+子进程+子进程的子进程。。“共同构成一个进程组,当接受到一个信号时,可以各自选择捕获、忽略、采取默认动作等 整个操作系统的所有进程都隶属于一个以init为根的进程树 windows 不存在层次的概念,所有进程平等 但是父进程拥有控制子进程的特别令牌==句柄== 进程的状态 运行态:占用CPU资源 就绪态:可以运行,但是因为其它进程占用CPU而需要等待 阻塞态:除非某种外部事件发生,否则进程不能运行(等待用户输入scanf) 进程的实现 what is 进程表? OS为了==执行进程之间的切换==所维护的表(process table),每个进程占用一个进程表项(一行),包含了进程状态的重要信息,eg:程序计数器、堆栈指针、内存分配状态、打开文件的状态、账号和调度信息、以及其它在进程由运行状态转换到就绪或阻塞时所必须保存的信息。 一个进程在执行过程中可能被中断数千次,每次中断后,被中断的进程都返回到与发生中断前完全相同的状态。 线程 为什么要在进程的基础上引出线程的概念? 多线程之家共用一片地址空间和所有可用数据的能力,不用频繁切换,==多进程不具有==; 线程比进程更加轻量级,更容易创建、撤销等(创建一个线程比一个进程快10-100倍); 从性能方面考虑,若是CPU密集型,则性能很难增强;若是I/O密集,则可以有效提高计算速度 进程间的通信

进程之间必须通过频繁的信息交流,此问题称为进程通信问题(Inter Process Communication,IPC)问题。进程通信机制可以分为以下

6种。

信号(Single,通过向一个或多个进程发送异步事件信号来实现;信号可以从键盘或者访问不存在的位置产生;信号可以通过shell将任务发送给子进程) 管道(Pipe,进程之间可以建立同步通信管道,一方向其写入字节流,一方从中读取字节流) 共享内存(Share Memory,利用共享内存,操纵共享变量来实现通信) 先入先出队列(更有保障的管道,named pip) 消息队列(描述内核寻址空间内的内部链接列表) 套接字(Socket,提供端到端的双向通信) 调度 why调度——scheduling algorithm? 计算机是多道程序设计系统时,若有两个及以上的线程/进程处于就绪状态,就存在cpu资源的竞争,==以何种顺序、何种策略==进行程序的运行,是调度程序需要解决的问题。 调度算法分类: 批处理(先来先服务、最短作业优先、最短剩余时间优先。。。。) 交互式(轮询调度【按照时间片】、优先级调度、多级队列调度、最短进程优先、保证调度【确保每个用户都被分配一定的处理能力】、彩票调度【类似于抽奖?抽运行时间】、公平分享调度【】) 实时(周期性、非周期性。。。) 死锁

what is 死锁?

在并发环境下,相互等待对方手里的资源,导致经常阻塞、无法正常运行

饥饿:进程缺少某种资源而无法继续执行

死循环:一直跳不出循环

死锁的条件:

==条件一==:资源互斥、不可剥夺条件、请求和保持条件、循环等待(循环等待未必会导致死锁,但死锁一定存在循环等待)

==条件二==:对不可剥夺资源的不合理分配

地址空间 why 提出地址空间?

要使多个应用程序同时运行在内存中,必须解决两个问题保护和重定位

解决==保护==——”保护密钥标记内存块“

如何解决程序运行过程中内存不足?

交换(swapping) 把一个进程完整调入内存,运行一段时间之后,再放回磁盘;空间的进程会存储在磁盘中,只有当需要运行的时候才会再调入。

涉及到的知识点 利用bitmap、free lists等方式进行内存监控 利用链表维护已分配的内存段和空闲内存段,

虚拟内存(virtual memory)——允许应用程序部分的运行在内存中

基本思想:每个程序都有自己的地址空间,这个地址空间被划分为多个称为页面(page)的块。每一页都是连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,硬件会立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。

几个概念 页表:目的是把虚拟页映射到页框中 页表项:与机器有关,但通常包括:高速缓存禁止位、访问位、修改位、保护位、在/不在位、页框号等 页面置换算法 最优算法 最近未使用算法 先进先出算法 第二次机会算法 时钟算法 NFU(最不经常使用算法)

==自己理解==

逻辑地址:按照进程分配的连续存储单元 ==逻辑地址 = 页号 + 页内地址==

物理地址:实际占用的内存杀的地址 ==物理地址 = 块号 + 块内地址==

文件系统

文件的组织方式:

结构化(db、excel) 非结构化(txt、二进制文件、流文件等)

OS需要实现的文件管理功能

文件共享 文件保护

文件的目录、文件的物理结构、文件的分配方式、存储空间管理、基本操作、文件共享(硬链接、软连接)、文件保护(口令保护、加密保护、访问控制)

磁盘系统

key word:柱面号、盘面号、扇区、

磁盘调度算法 磁盘时间消耗:==寻找时间 + 延迟时间 + 传输时间== 减少磁盘延迟时间的方法? 交替编号(避免逻辑相邻的数据,物理空间也相邻。每次读取完一个扇区的数据,需要一定的时间用于数据准备) 错位命名(盘面、楼上楼下交替命名) 思考:为什么要以(柱面号 盘面号 扇区号)命名,而非(盘面号 柱面号 扇区号)的形式??

## IO设备

。。。。。

。。。。。

## 后记

初步笔记,完善ing



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3