操作系统笔记

2020-02-18  本文已影响0人  写个代码容易么

操作系统主要功能

进程管理(CPU管理)

进程控制:创建,暂停,唤醒,撤销

进程调度:调度策略,优先级

进程通信:IPC

内存管理

内存分配

内存共享

内存保护

虚拟内存

设备管理

设备的分配和调度

设备无关性操作

设备传输控制

设备驱动

文件管理

存储空间管理

文件目录操作

文件目录权限管理

分时操作系统

CPU分为时间片处理

中断技术(处理外部信号)

通道技术(外设和内存之间数据传输)

适合学习的小型操作系统Minix OS

实战

Linux系统编译视频教程 https://www.bilibili.com/video/av50757124?p=11

MBR程序编写 https://blog.csdn.net/u011391093/article/details/51701602

线程

临界资源:一次只允许一个线程独占访问的资源。

临界区:线程中访问临界资源的程序段。    

> 临界区尽可能小

临界区访问机制四个原则:

- 忙则等待

- 空闲让进

- 有限等待

- 让权等待    

进程同步

合作进程中某些操作之间需要满足某种先后关系或某个操作能否进行需要满足某个前提条件,否则只能等待。

> 互斥关系属于特殊的同步关系。

信号量:允许指定数目的线程访问临界区

死锁:两个或多个进程无限期地等待永远不会发生的条件的一种系统状态。

大小端

小端:低位在低字节,强制转换数据类型时不需要再调整字节了。

大端:有符号数,字节最高位不仅代表数据本身,还起到了符号的作用。符号位固定为第一字节,也就是最高位占据的低地址,符号可以直接取出,容易判断正负。

启动过程

上电 -> POST -> BIOS -> MBR -> OBR

POST:Power On Self Test (上电自检)

BIOS:Basic Input Output System ,主板ROM中的程序

MBR:Main Boot Record,整个硬盘最开始的扇区,512个字节

MBR引导扇区内容:466字节引导程序及参数 + 64字节分区表 + 2字节结束标记(0x55aa)

OBR:OS Boot Record , 操作系统引导记录

进程调度

目标:

1.响应速度尽可能快

2.进程处理时间尽可能短

3.系统吞吐量尽可能大

4.资源利用率尽可能高

5.对所有进程公平

6.避免饥饿

7.避免死锁

PCB 进程控制块

Process Control Block

记录进程相关信息,方便操作系统调度

静态地址映射

物理地址=装入内存基址+偏移地址

特点:

1.程序运行之前确定映射关系

2.装入内存后不能移动

3.连续地址空间

动态地址映射

执行过程中将逻辑地址转换物理地址

特点:

1.程序占用内存空间可动态变化(变化后需要更新基址)

2.不要求占用连续的地址空间(分段,记录每段的基址)

3.便于多个进程共享代码

分区内存管理

单一分区

不分区,完全被一个程序占用 DOS

固定分区

特点:

浪费内存,程序比分区小

大程序无法运行,程序比最大分区大

动态分区

特点:

分区大小和个数可变

存在大量分区碎片

内存交换

原理

内存不够时把进程写到磁盘(Swap Out)

进程要运行时重新写回内存(Swap In)

系统调用 sys_call

0x80号中断

文件系统

Fat 文件系统按4k/32k块大小存储,每个块指向下一个块地址

Ext文件系统 存储文件索引inode,inode数量即为文件数量

df -i 查看inode利用率

```

Filesystem Inodes IUsed IFree IUse% Mounted on

udev            501640    367  501273    1% /dev

tmpfs          504897  1806  503091    1% /run

/dev/vda1      5120000 366201 4753799    8% /

tmpfs          504897      1  504896    1% /dev/shm

tmpfs          504897      5  504892    1% /run/lock

tmpfs          504897    18  504879    1% /sys/fs/cgroup

tmpfs          504897    16  504881    1% /run/user/1000

```

tune2fs命令查看文件系统参数

```

tune2fs 1.44.1 (24-Mar-2018)

Filesystem volume name:  cloudimg-rootfs

Last mounted on:          /

Filesystem UUID:          4eccdc19-27d9-4015-83f0-510c1bfd6b9f

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:        signed_directory_hash

Default mount options:    user_xattr acl

Filesystem state:        clean

Errors behavior:          Continue

Filesystem OS type:      Linux

Inode count:              5120000

Block count:              10485499

Reserved block count:    0

Free blocks:              7502787

Free inodes:              4864438

First block:              0

Block size:              4096

Fragment size:            4096

Reserved GDT blocks:      125

Blocks per group:        32768

Fragments per group:      32768

Inodes per group:        16000

Inode blocks per group:  1000

Flex block group size:    16

Filesystem created:      Tue Nov  6 16:34:21 2018

Last mount time:          Sun Dec 22 20:49:01 2019

Last write time:          Sun Dec 22 20:48:38 2019

Mount count:              48

Maximum mount count:      -1

Last checked:            Tue Nov  6 16:34:21 2018

Check interval:          0 (<none>)

Lifetime writes:          8 GB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:              256

Required extra isize:    28

Desired extra isize:      28

Journal inode:            8

First orphan inode:      20869

Default directory hash:  half_md4

Directory Hash Seed:      01a74427-a2d0-44f4-827d-af3dc495c8a3

Journal backup:          inode blocks

```

上一篇下一篇

猜你喜欢

热点阅读