100分
40选择题 1.5分/道 单选题
10填空题 1分/道
3道大题
- schedule
- 同步
- memory比较难 会结合实验 page table
具体可以看下实验三
在哪一个块花的时间多
哪一章就是重点
手画sv39页表
具体的内容展开
DMA不重要
resource allocator and abstractor
尽量使用K,M,G进行表达,使用16进制表示hex
linux 三千万行
狭义的操作系统和广义的操作系统
mode bit
app unprivileged mode
什么是狭义的操作系统,什么是广义的操作系统
web browser不算任何的操作系统,不影响操作系统的一部分吗,
RISCV 有3.5mode
ARM有4个mode
我们的code大部分跑在smode下
event是trap
操作系统是事件驱动的
让用户调用previlige instruction
systemcall指令本身不是特权指令
user-kernel 切换会更换context,save到kernal stack中的pt-regs,回去的时候也会做一个restore
timer
process和memory management是重点
linux structure 宏内核
这个i是systemcall number
static variable
如果已经初始化存放在data, 没有初始化存放在bss中
static const ?
存放在.rodata中
code section 应该给r-xp权限
正过来考,反过来也考
dynamic
是什么,然后解释原因
BSS里面是什么
是loader发起的,然后使用kernal进行setup
static link
dynamic space
ld.so
policy 和 mechanism 分开
unix和linux是monolithic,不是layered
进程
什么是进程,状态图
进程的概念十分重要
process is ____ unit. Process:a unit of resource allocation and protection
thread is ____ unit. execution unit执行单元
code和data section都是ELF里面来的,PC不是,reg不是,stack,heap不是
PCB
神图
ready context-switch
fork为什么可以返回两只
user space child space所以返回两个
fork出来四次,打出来六次hello
signal
^C on the command-line sends a SIGINT signal to the running
command (interrupt)
SP
PC
假设两个user进程做context-switch,两个进程切换一定是在kernel mode发生,
不能发生在user mode,原因是决定了cpu的使用
user context saved 还有 kernel context saved where考察
新的fork的内容会不会立刻去跑,代码也很关键,摘抄
Scheduler决定不会立刻去跑
多个process schedule
ZPC,thread,sync,deadlock
schedulering 肯定考察一个大题
FCFS
SJF optimal 抢占的,非抢占的
RR
RR priority
mutile queue
每种算法会算甘特图,arriving time, turnaround time
为什么要学?
memory (最长时间不用lru,peterson算法不现实)
很简单,满足三个要求
画甘特图,算两个事件average waiting ,average turnaround
如果一个进程有多个start,如何算turnaround
ipc 有shared memory 和 message passing两种情况就好
栈和pc不能够share
context switch是switch执行单元
哪些不共享,哪些共享elf的都关系共享
thread的优缺点
缺点isolation,优点四条
overhead比较大,管理最简洁
每个user space kernel space分配一个栈,占内存,执行分配栈的操作,浪费cpu资源
linux只用one-to-one
复杂化了
Synchronization tools
解决race condition三个方法
如何保证在多核情况下保持compare_and_store
memory barrier不考
hardware instruction必考
compare-and-swap被实现了,如何保证在multiecore上保证互斥,原子的
lock bus (cmpxchg)
解决busy waiting,引入samphare,多了一个waiting queue
等同于spinlock
wait和signal需不需要原子(保护) 需要,多个进程同时可能对s操作
添加一个spinlock
Synchronization Examples难度低于bounded-buffer problem
找点bounded buffer problem题目去看一下
有一道大题,去练练手
不能放在外面,一旦锁死sleep了
deadlock发生有四种条件
如何去解决deadlock
- 打破四种条件
- 定义一个safe state, single , multie banker
detection 环
银行家算法和环,过一下银行家算法
recovery help(abort) process
内存是重点
三个核心问题
- partitioning
进程啰来啰去,一个base+limit
fixed partitions internal fragmentation大小固定
variable partitions wxternal fragementation大小不固定
ff,bf,wf怎么去分配
first-fit and best-fit usually perform better than worst-fit
很多种partition称为segmentation段
几个section权限一样并入到一起
再看一下权限,进行比较 segment table
sgementation还是有external fragmentation, internal fragmentation
解决采用paging
MMU 内存地址的translation
paging: 内存切成大小一样的块 进程页,物理帧
进程页,物理帧
paging没有external fragmentation,有 internal fragmentation,比较小
page虚拟地址
frame物理地址
page table里面存的是PTE
具体去看一下PTE里面是什么
offset
PFN perm V
减少对内存的访问,引入TLB
memory protection
permission bits
page table structure
page table 多级 层级,hash,inverted
最常用的是hiarahily
一级变成两级 为什么可以省内存
实例化,hoss
page table 要去寻找哪一个entry(page table walk)
10+10+12
9+9+9+12
48位多一个9 arm64
page table entry怎么计算里面的值
virtual memory
demanding paging 足够重要
copy on write 其他时候不写,写的时候拷贝一份
访问了才分配,其他都是假的
观看page table不能看出来valid
MMU去issue page fault, OS handle page fault
page replacement
给一串number, 代表page number, 几种算法,算page fault对算法
什么是thrashing,起因是a process is busy swapping pages in and out
原因是:小于局部性
• total memory size < total size of locality
使用working-set来决定,哪些在locality里面
上面的就是内存管理会有一道比较难的题,多复习一下实验
segemnt管权限在segmentation table里面
只会出一种题
access time positioning time
柱面,cylinder,
FCFS,SCAN,SSTF
磁盘是做什么的
U盘寻址的办法 U盘就是SSD,FCFS is good
IO 两种query的方法
主动polling轮询和interrupts被动是如何实现的
polling interrupts,浪费cpu运行时间
对操作系统最重要的是事件
文件系统
cpu thread
memory virtual address
storage file文件
文件被存储在file control block里面
什么是file control block
index of per-process open-file table
file discrapter 共享 index of per-process 自己的 跨越进程,共享的,不是per-thread
VFS是如何实现的
定义了一个统一的接口,具体实例化成了具体的操作
目录的实现
dir-entry实现一个转换
实现一个转换,从name→inode转换字面的意思
从人能读的文件名转换为机器能够理解的文件名
linux里面目录是文件
data block装的是directory entry
目录directory也是一种文件,data block存的是目录项
disk block allocation
连续分配有什么优点和缺点
优点是:
缺点是:hard to hanble
优点;handle file extension
缺点是:必须顺序访问,比较慢,容易丢失
FAT是用link比较多
Windows用fat比较多
缺点是overhead
优点:很好扩展,不用sequical
最后衍生出了inode
要会算 最大的file size
500M落在哪个里面,读哪个data block
soft link 可以跨文件系统,存储的是目录path
hard link 不可以跨文件系统,directory entry 目录项有一个inode,各个文件系统不一样
remove 叫做unlink
最后一道大题有一页的长度