《操作系统原理与设计》笔记
本文用于整理《操作系统原理与设计》课程上所使用 Slides 的笔记,以备查阅。
第一章 操作系统概览计算机系统概览:
系统组织:由 CPU 连接总线,通过设备控制器,和其他 IO 设备进行交互
存储结构:采用三角形式的存储结构,通过缓存来提高性能,也通过 DMA 技术提高外存性能
系统架构:多处理器系统,多核系统,集群系统
操作系统概览:
多道程序(multiprogramming):用于提高 CPU 利用率
多任务处理(multitasking):用于提高任务的可交互性
中断驱动理念:硬件中断通过设备产生,软件中断(exception/trap)则由程序错误,系统调用等产生
双模式运作(dual-mode):通过 mode bit 来区分是 user mode 还是 kernel mode,后者具有更高权限
系统调用:由内核提供给上层的 api,用于屏蔽与底层硬件交互的过程
操作系统标准:POSIX 和 BSD,分别实现的操作系统有 Linux 和 MacOS
操作系统组件:
进程:是程序的运行时实例,在 Linux 中通过树结构维护父子关系,需要提供同步, ...
《深入理解计算机系统》笔记
本文用于记录《深入学习计算机系统》中的知识点,以备查阅。
第二章 信息的表示和处理字节顺序:大尾端(sun,sparc)和小尾端(x86,arm),看低地址放的是 MSB 字节还是 LSB 字节
位操作:& | ~ ^ << >> >>>
整数表示:
无符号:$\sum_{i = 0}^{w - 1}x_i * 2^i$,有符号:$-x_{w - 1}*2^{w - 1} + \sum_{i = 0}^{w - 2}x_i * 2^i$
无符号与有符号之间的变换:保持每个位不变,但是按照转换后的整数类型解释
如果表达式中既有无符号整数,也有有符号整数,那么有符号整数会被解释成无符号整数(ux > -1)
在判断表达式真假的时候,可以使用 0,-1,Tmin 等特殊值检验
扩展:符号扩展,0 扩展
截断:去掉最高的那些位
除法:整数除法中由于截断,正整数结果趋近 0,负整数结果远离 0
浮点数表示:
IEEE 标准:采用 $(-1)^s M * 2^E$ 表示,注意阶码偏移(单精度 ...
《计算机系统》备忘录
计算机系统的相关知识,总结于此,以备查询。
01 内存管理虚拟内存:单片机程序写完后会将其进行烧录,程序里面的地址都是内存的物理地址,这给同时运行多个程序带来了困难,为此,可以在物理地址上层提供虚拟地址,程序看到的都是虚拟地址,而物理地址对其是透明的。为了管理虚拟地址和物理地址之间的关系,一般有内存分段和内存分页方式。
内存分段:程序由不同的逻辑段构成,如代码段,数据段,栈段等。分段下的虚拟地址表示为段选择子和段内偏移量,地址转换过程如下:
内存分段的缺点:内外部碎片严重,内存交换效率低。
内存分页:分页是把整个虚拟和物理内存空间切成一段段固定尺寸的大小,称其为页,映射过程:
分页很好地解决了内外部碎片和内存交换的问题,但是也存在以下问题:
简单的分页方式浪费内存:可以使用多级页表的方式解决
多级页表转换过程需要更多的时间:引入 TLB,快速进行转换
段页式内存:先将程序划分为多个有逻辑意义的段,接着再把每个段划分为多个页,此时地址结构就由段号、段内页号和页内偏移三部分组成,该方案能提高内存的利用率。
Linux 内存管理:主要采用的是页式内存管理,但同时也不可避免地涉 ...
《操作系统概念》笔记
本文总结了《操作系统概念》中的知识点,以便查阅。
第二章 操作系统结构操作系统的服务:主要包括以下功能:
用户界面
程序执行
IO 操作
文件系统操作
通信:通过共享内存或者消息交换实现
错误检测
资源分配
记账:记录用户使用资源类型和数量
保护和安全
系统调用:提供操作系统的服务调用接口,该部分通常使用 C 或者 C++ 实现,当然,对某些底层硬件操作可能需要使用汇编。向操作系统传参的方法有:寄存器传参,栈传参,表传参。
系统调用类型:进程控制,文件管理,设备管理,信息维护,通信,保护。
操作系统的结构:
简单结构:如 MS-DOS,并没有仔细划分为模块
分层方法:每层上调用的接口是不同的,用于区分用户接口和不同等级的系统接口
微内核:主要功能在于为客户端程序和运行在用户空间的各种服务提供通信,通信是通过消息传递实现的
模块:最佳方法是可加载的内核模块,常见于现代 Linux 系统中
操作系统的引导:加载内核以启动计算机的过程,称为系统引导。大多数的操作系统都有一个引导程序,改程序能够定位内核,并将其加载到内存以开始执行。当 CPU 收到一个重置事件 ...