南航-操作系统-课堂笔记
记录南京航空航天大学-物联网专业-刘老师讲解的操作系统知识,并且会部分涉及Linux0.11版内核源码解析
鹏鹏~
NUAAer
展开
-
操作系统-课堂笔记-概述(南航)
概述为何要学操作系统?操作系统是三大系统类课程之一:计算机组成原理 - 提供重要的抽象:指令集编译原理操作系统 - 提供的最重要的抽象:进程从下述几个问题看操作系统EXE,ELF是什么?运行一个EXE到底发生了什么?关于C库函数:printf, scanf, gets用的那么多,那么他们是怎么实现的呢?fread和read的区别是什么?回归古老时代的一个问题:一台512M内...原创 2019-05-23 18:13:38 · 1844 阅读 · 1 评论 -
操作系统-课堂笔记-程序装入链接(南航)
程序装入链接程序装入引言首先明确下从.c程序到跑在计算机中都经历了什么过程?首先将.c程序编译编译以后由于使用了各个模块,需要进行链接操作链接完成以后,生成了exe文件,需要将其装入内存中,此即装入我们双击一个exe文件,其实就是触发了装入装入以后就交给操作系统来完成(包括进程创建等过程)至此我们就知道了从.c到跑在计算机中的程序都经历了哪些过程后面讲解虚拟内存的时候需要用...原创 2019-06-13 11:56:00 · 1213 阅读 · 1 评论 -
操作系统-课堂笔记-内存管理续(南航)
内存管理续Linux0.11版内核中页表初始化虚拟内存分段机制1.Linux0.11版内核中启动时页表初始化过程声明Linux0.11版内核只能管理16M内存,一个页4KB,那么一个页表可管理4MB内存,所以只需要4个页表即可管理所有内存,然后加一个页目录(一级页表、外表)。所以设置页表的时候需要设置:一个页目录+4个页表首先看下有关数据的声明:/* * linux/bo...原创 2019-06-11 23:58:33 · 852 阅读 · 0 评论 -
操作系统-课堂笔记-内存管理(南航)
内存管理操作系统内核的几大模块:进程调度算是核心模块,本系列博客的大部分内容都在讲解进程调度模块,从本篇开始讲解内存管理,大概用一篇博客就能搞定,但是篇幅可能有点长,也可能分成两篇。回顾进程的内存抽象:我觉得这张图已经看了无数次了,还是再讲解下:每个进程有text段:存放代码data段:存放全局变量和静态变量heap区:new, malloc从此处申请空间stack区:存放...原创 2019-06-11 19:54:49 · 1299 阅读 · 0 评论 -
操作系统-课堂笔记-线程(南航)
线程之前我们都是以进程为单位进行探究的,其实现代操作系统调度单位都是线程。我们之前以进程为单位进行探究有助于简化问题,帮助我们建立知识体系,下面我们介绍线程。回顾先回顾下我们进程部分讲的内容:进程的概念进程的内存抽象进程的状态及转移PCB与进程切换进程的创建与终止进程通信进程通信的原因消息传递、共享内存、管道进程在操作系统如何表示?进程是如何调度的?...原创 2019-06-10 19:42:03 · 920 阅读 · 0 评论 -
操作系统-课堂笔记-死锁(南航)
死锁什么是死锁?什么是死锁?你们一定知道,看图(原谅我这个gif拍的不怎么漂亮,伪装者24集27分):三人互指算不算死锁(斜眼笑),1让2放枪,2说要3先放,3说不放,emmmm,如果不太形象就当看热闹了叭!还有几个例子可以看看:哲学家进餐问题:一共五根筷子,五个哲学家 一人拿了一根,死锁了。还有交通死锁:所以什么是死锁呢?A set of processes is in a...原创 2019-06-10 15:30:46 · 902 阅读 · 0 评论 -
操作系统-课堂笔记-实时调度(南航)
实时调度(续CPU调度)什么是实时?首先讲一下实时的定义和要求:实时系统指系统的计算正确性不仅仅取决于计算的逻辑正确性,还却决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效,也可认为没有得到正确的计算结果。以Win10为例:我们笔记本现在的CPU已经很强大了,为什么这么说呢?因为CPU利用率经常很低,最起码日常在10%以下,后台运行网易云音乐+TIM:我们在日常使用...原创 2019-06-10 11:34:19 · 1350 阅读 · 1 评论 -
操作系统-课堂笔记-CPU调度(南航)
CPU调度复习内存抽象:进程的状态转移:进程通信:共享内存、消息传递、管道进程调度进程调度分为三类:低级调度:也称为进程调度、短程调度,作用:决定就绪队列中的哪些进程应该获得CPU。中级调度:也称为中程调度,作用:使暂时不能运行的进程从内存调至外存,进入就绪驻外存状态或挂起状态。 目的:提高内存利用率和系统吞吐量。高级调度:又称为作业调度、长程调度、接纳调度,作用:把外...原创 2019-06-09 20:44:23 · 1395 阅读 · 0 评论 -
操作系统-课堂笔记-进程通信(南航)
进程通信引言进程之间为何需要通信?概述中第六个问题提到,如果一个C/Java程序想要使用matlab来分析数据,那么程序之间怎么传输数据?—正是进程通信其他应用:多进程排序,排序还需要多进程?如果1万条数据,那么直接一个函数排序就OK。如果10亿条呢?—使用多进程排序算法,需要使用进程间通信。网络服务器大多都是多进程的,多个进程之间是需要传递数据的。思考如何实现进程通信很容易想到...原创 2019-06-09 16:34:50 · 725 阅读 · 0 评论 -
操作系统-课堂笔记-信号量(南航)
上篇博客地址进程同步-信号量本节目录信号量的两种实现方式:整型信号量、记录型信号量信号量的应用:互斥、同步、前趋关系信号量集信号量应用:生产者消费者问题、哲学家进餐问题信号量的两种实现方式上一篇博客中我们已经讲到了一种信号量的实现方式,那是一种记录型信号量,现在我们来探讨下两种信号量实现方式的不同。整型信号量:整型信号量的实现方式:wait(s){ while(s<...原创 2019-06-09 15:07:41 · 3508 阅读 · 4 评论 -
操作系统-课堂笔记-进程同步(南航)
进程同步上一篇博客引言课程概述中讲过一个汇编指令执行顺序的问题:该问题是由于引入分时方式而引起的,本节将讨论为了解决上述问题,历史上都出现过哪些解决方案。如何鉴别分时操作系统引起的问题再看一个例子:上面的程序是一个多进程服务器,代码是有问题的,我们来分析下问题在哪里。首先多进程体现在使用了fork(),多进程常见的问题是“共享变量问题”,那么上述代码中有没有共享变量呢?很显然...原创 2019-06-09 00:37:51 · 1266 阅读 · 5 评论 -
操作系统-课堂笔记-进程概述(南航)
进程概述1.引言首先引入问题,进程是怎么产生的,为什么需要进程?我们先回到古老的裸机编程时代,即没有操作系统的时代,我们写的代码(汇编)直接跑在硬件之上。裸机编程自由度很大,即内存可以供我们随意使用自由使用内存带来一个问题:CPU可能会混淆数据与指令,如果产生混淆会产生无法预料的结果自由使用内存带来的另外一个问题:我们的程序可以修改自身,比如修改内存中某一位置的数据,那么可能就将自己...原创 2019-05-28 17:08:15 · 1620 阅读 · 0 评论 -
操作系统-课堂笔记系列博客(南航)-考研or期末
操作系统课堂笔记简介写此系列博客的初衷我们操作系统老师讲的真的非常好,所以将所获得知识记录保存起来。既能起到分享的作用,又能帮助笔者复习。知识来源NUAA-刘老师。推荐参考资料《操作系统精髓与设计原理(原书第6版)》PDF中文版.pdf 提取码:wi9h《Linux内核完全注释-赵炯编著》 提取码:4teu我的另外一系列博客:Linux内核完全注释-读书笔记目录 - 持续...原创 2019-06-20 18:07:57 · 6870 阅读 · 10 评论 -
操作系统-虚拟内存、虚拟地址空间机制
操作系统-虚拟内存有关操作系统的设计,都是在解决一个问题,即:如果让计算机高效安全的运行多道程序。本文要解决哪些问题为何虚拟地址可以起到这样的作用:512M内存的机器,可跑1G大小的游戏?虚拟内存技术体现了哪些设计原则?虚拟内存简介虚拟内存有哪些能力?给所有进程提供一致的地址空间,每个进程都认为自己是在独占使用单机系统的存储资源—如何实现呢?为何能有这种效果保护每个进程的地址...原创 2019-04-07 20:15:44 · 2823 阅读 · 0 评论 -
操作系统-课堂笔记-磁盘调度(南航)
磁盘寻址方式CHS寻址工作原理CHS全称:Cylinder-Head-Sector即柱面/磁头/扇区 寻址方式,是早期IBM PC架构上用来进行磁盘寻址的方法。来张图下面分别介绍C, H, S首先是C:Cylinder译为柱面,即一个圆柱的切面,切成一个空心柱形,切记不要将C理解成了柱面,不然下面算寻址空间就算不对了。H:Head译为磁头,上图所示,现在只需要知道一个盘面一般有...原创 2019-05-20 00:29:26 · 1452 阅读 · 1 评论 -
操作系统-课堂笔记-系统调用(南航)
文章目录系统调用系统调用功能概述1.什么是系统调用?2.系统调用提供哪些功能?3.提供系统调用有何优点?系统调用的处理过程system_call()函数sys_call_table在看看系统调用号系统调用和普通函数调用对比系统命令和内核函数系统调用的实例分析系统调用的参数传递如何增加一个系统调用小结系统调用系统调用功能概述1.什么是系统调用?OS内核中都有一组实现系统功能的过程,系统调用...原创 2019-07-03 17:14:21 · 718 阅读 · 0 评论 -
操作系统-课堂笔记-strace的使用(南航)
文章目录系统调用-strace的使用声明简介使用strace一个简单的例子再来一个简单的例子如果绑定到进程strace的统计功能研究fread/fwrite的内部实现课外讨论系统调用-strace的使用声明本章和考试完全无关,老师讲strace的目的可以简单理解成帮助我们提升技术视野,篇幅不长,可略读简介strace是什么?一个简单的跟踪系统调用执行的工具可以从开始到结束跟踪二进制...原创 2019-07-03 20:19:06 · 628 阅读 · 0 评论 -
操作系统-课堂笔记-IO(南航)
文章目录IOIO硬件IO设备的发展历史IO设备怎么和CPU、内存连接?IO设备的典型构成使用IO设备的典型协议1.轮询2.中断两种方案对比3.DMA控制器IO应用接口IO内核子系统xv6中的IOIO先回忆下冯诺依曼计算机的五大部件:运算器、控制器、存储器、输入、输出运算器我们没讲,是算数逻辑单元控制器就是CPU,进程是CPU的抽象,这是我们的重点内容存储器:分为内存和外存,内存的分配方...原创 2019-07-03 23:25:49 · 1054 阅读 · 0 评论 -
操作系统-复习-考题预测及解析-期中考试
考题预测及解析首先声明一点:从长远角度看,前面博客中讲的研究思路更重要从考试角度看,这篇博客就足够了,因为考点几乎是固定的重点声明首先声明重点多道程序设计技术!进程状态转移,什么会导致状态的转移?进程同步:PV操作(重点),这里多做几个题目吧!进程通信:论述消息传递和共享内存的区别线程:论述多进程、多线程的优劣CPU调度算法(大概五分左右),算(带权)周转时间死锁部分...原创 2019-06-19 23:45:30 · 7065 阅读 · 0 评论 -
操作系统-复习-考题预测及解析-期末考试(南航)
考题预测及解析首先声明一点:从长远角度看,前面博客中讲的研究思路更重要!从考试角度看,这篇博客就足够了,因为考点几乎是固定的!另外,上篇博客写于期中考试前,这篇博客写在期末考试前!时间:2019/7/4考点由于笔者从开始到现在从来没有看过课本,一直跟着老师PPT和思路来,所以重点的顺序就按照老师讲的顺序来!进程部分...原创 2019-07-04 10:25:11 · 3003 阅读 · 3 评论 -
操作系统-课堂笔记-文件系统(南航)
文件系统引言我们以探究式的方式来讲解文件系统:从零开始,提出最基本的需求,设计最基本版本的文件系统。然后不断迭代,从而引出现代操作系统使用的文件系统。首先思考下什么是文件?首先,文件是用来保存数据的,那么数据保存在了哪里呢?保存在了磁盘中即文件和磁盘是有关的,那么两者是什么关系呢?文件是操作系统对磁盘(一级永久性存储介质)的抽象为什么要讲文件以及磁盘的关系呢?我们说...原创 2019-07-03 10:45:08 · 2058 阅读 · 1 评论 -
操作系统-课堂笔记-EXT2文件系统(南航)
文章目录EXT2文件系统简介1.什么是EXT2文件系统2.EXT家族和我们之前将的文件系统有什么关系?EXT系统的核心设计数据存放区1.inode-索引节点2.inode table3.block数据区块中介数据(metadata)1.superblock-超级块2.block group区块群组3.block bitmap4.inode bitmap5.group descriptorEXT2...原创 2019-07-03 14:30:57 · 614 阅读 · 0 评论 -
操作系统-课堂笔记-虚拟文件系统VFS(南航)
文章目录虚拟文件系统VFS简介VFS的作用举例说明VFS都支持哪些文件系统类型?1.基于磁盘的文件系统,它们管理在本地磁盘分区中可用的存储空间2.网络文件系统:用于访问属于其他网络计算机的文件系统所包含的文件3.特殊文件系统实现细节1.VFS中通用文件模型概念2.VFS所处理的系统调用proc虚拟文件系统VFS简介什么是虚拟文件系统?VFS是一个软件层,用来处理与Unix标准文件系统相关...原创 2019-07-03 15:46:26 · 926 阅读 · 0 评论