美文网首页
操作系统笔记

操作系统笔记

作者: 写个代码容易么 | 来源:发表于2020-02-18 20:50 被阅读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

    ```

    相关文章

      网友评论

          本文标题:操作系统笔记

          本文链接:https://www.haomeiwen.com/subject/bltmthtx.html