首页 » 操作系统学习笔记

操作系统学习笔记

操作系统实质上是一个很复杂的控制软件,可以管理应用,资源管理,管理外设等等

操作系统的架构的层次是在硬件之上,应用之下

OS Kernel:可并发(同时存在多个运行的应用)。可共享,可虚拟,可异步

微内核:尽可能将内核功能移植到用户空间,缺点就是性能低

外核和内核:一个负责硬件,一个负责软件

DISK(硬盘存储):存储OS

BIOS:基本I/O处理系统(加载外设以及加载软件来运行OS) (basic I/O system)

BootLoader:加载OS

POST(加电自检,查找显卡和执行BIOS)

系统调度:来源于“合法”的应用向系统发出服务请求的(同步或者异布)

异常:来源于“不良”的应用非法指令(或者应用意想不到的请求,应用无法获得资源需求)(同步)

中断:来源于外设对于硬件设备和网络中断(异步)

逻辑化地址空间,独立地址空间,可访问相同内存,更多内存空间(虚拟化)

物理地址空间:硬件支持的地址空间

逻辑地址空间:应用程序拥有的内存范围

应用逻辑地址映射到物理地址

CPU需要逻辑地址上的内存内容(ALU),内存管理单元(MMU)寻找逻辑地址和物理地址之间的映射,控制器将从总线发送物理地址的内存内容的请求

内存发送物理地址内存内容给CPU(告诉CPU,物理地址找到了),建立逻辑地址和物理地址之间的映射(确保应用互不干扰)

连续性内存管理(内存碎片和分区的动态分配)

外部碎片:在分配单元间的未使用内存

内部碎片:在分配单元中的未使用内存

当一个应用被批准运行在内存中时,分配一个连续的区间,来给运行的应用访问数据

动态分配的策略:当想分配某字节,先从低地址找,找到第一个被某字节大的空闲块,就使用它

动态分配的缺点就是外部碎片严重

非连续内存分配

分段Segmentation:

逻辑地址空间连续,物理地址离散

一个段表示一个内存块,一个逻辑地址空间,应用访问内存地址的时候,需要个二维的二元组

虚拟内存:

早期内存不够应用消耗,应用的规模比存储器的容器大

当应用太大,超出内存,可采用手动的覆盖(overlay) 技术,只把需要的指令和数据保存在内存中

当应用太多,超出内存,可采用自动的交换(swapping) 技术,把暂时不能执行的程序送到外存(磁盘)中

进程和线程:

进程状态(state),线程(thread),进程间通信(inter-process communication),进程互斥与同步,死锁(deadlock)

进程包含正在运行的应用的全部状态信息

进程可动态化创建,结束进程,可以被独立调度并占用处理,不同的进程互不影响,可访问共享数据或者资源

进程控制块(process control block, PCB):进程的数据结构,操作系统管理控制进程运行所用的信息集合,操作系统为每一个进程都维护了一个PCB,用来存储保存和该进程有关的状态信息


进程、线程
进程 / 线程间通讯方式
进程调度算法
进程 / 线程状态
死锁
内存管理


FHS规范(3.0),全称Filesystem Hierarchy Standard,中文翻译为文件系统层次结构标准,用于定义根目录以及一级子目录的规范,大多数Linux版本使用该标准来定义文件系统(并不一定完全符合规范,只是大概上符合)

FHS规范定义了系统各个目录应该要放什么文件数据,以及所需要的文件和目录

例如:规范某一些文件或者目录可以分享或者不可以分享给给其他人使用

FHS规范了根目录(/),以及根目录的子目录etc(配置文件),bin(必要软件或者命令),usr(二级目录),home(当前用户的家目录),var(动态数据)

Linux文件系统---VFS(虚拟文件系统)(Linux下一切都是文件)

VFS不需要考虑不同文件系统和存储介质的差异,因为其内核抽象出了通用的文件系统接口,只要符合接口标准,一些文件或者比较特殊的文件系统都是可以兼容

VFS抽象对象,超级块:文件系统,目录项:文件的路径,索引节点:具体文件(操作文件的具体信息),文件:进程打开的文件。都有自己的接口来操作

XFS(高性能64位日志文件系统),带有日志功能防丢数据,原生提供备份工具(xfsdump/sfsrestore)

添加新评论

已有 2 条评论

  1. 香香甜甜的果粒橙

    1. 美汁源的好喝,嘻嘻~