1.3 操作系统
2020-11-27 11:41 kuter 阅读(152) 评论(0) 收藏 举报一、启动:
1、通电:从ROM(只读内存,即:BIOS芯片)中读取BIOS|UEFI引导程序,BISO程序执行硬件自检,读取CMOS中配置信息初始化
2、通过启动顺序优先级,把控制权交给排在第一位的储存设备,下一阶段执行程序,磁盘第一个扇区512byte(即:MBR):
(1) 第1-446字节:调用操作系统的机器码。
(2) 第447-510字节:分区表(Partition table)。
(3) 第511-512字节:主引导记录签名(0x55和0xAA)。
分区纪录表64byte(记录一个分区需要16byte);主引导记录签名(最后2byte,0x55和0xAA:这个设备可以用于启动)
记录一个分区16byte:
(1) 第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
(2) 第2-4个字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。
(3) 第5个字节:主分区类型。
(4) 第6-8个字节:主分区最后一个扇区的物理位置。
(5) 第9-12字节:该主分区第一个扇区的逻辑地址。
(6) 第13-16字节:主分区的扇区总数。
3、MBR把计算机的控制权就要转交给硬盘的某个分区,这里又分成三种:
3.1 情况A:卷引导记录
上一节提到,四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做"卷引导记录"(Volume boot record,缩写为VBR)。
"卷引导记录"的主要作用是,告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。
3.2 情况B:扩展分区和逻辑分区
随着硬盘越来越大,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有一个区可以被定义成"扩展分区"(Extended partition)。
所谓"扩展分区",就是指这个区里面又分成多个区。这种分区里面的分区,就叫做"逻辑分区"(logical partition)。
计算机先读取扩展分区的第一个扇区,叫做"扩展引导记录"(Extended boot record,缩写为EBR)。它里面也包含一张64字节的分区表,但是最多只有两项(也就是两个逻辑分区)。
计算机接着读取第二个逻辑分区的第一个扇区,再从里面的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它自身为止(即只有一个分区项)。因此,扩展分区可以包含无数个逻辑分区。
但是,似乎很少通过这种方式启动操作系统。如果操作系统确实安装在扩展分区,一般采用下一种方式启动。
3.3 情况C:启动管理器
在这种情况下,计算机读取"主引导记录"前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的"启动管理器"(boot loader),由用户选择启动哪一个操作系统。
Linux环境中,目前最流行的启动管理器是Grub。
4、控制权转交给操作系统后,操作系统的内核首先被载入内存。
以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。
然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。
至此,全部启动过程完成。
引用http://www.ruanyifeng.com/blog/2013/02/booting.html
二、操作系统内核分类:
1、宏内核:
内存管理
cpu调度
文件系统
中断处理,设备驱动
应用管理,进程调度
2、微内核:进程调度,弹性部署,5G,loT
操作系统的用户态和内核态:
cpu分不同的指令级别:0-3
linux内核跑在ring0级,用户程序跑在ring3级,对于系统的关键访问,需要经过kernel同意,保证系统的w健壮性,linux内核执行的操作-->200多个系统调用
操作系统进程管理:
进程是操作系统用来分配资源的基本单位,每一个进程都有一个数据结构描述它,进程描述符(PDC:Process Control Block)。
进程和线程的区别:进程有自己的内存空间,线程共享进程的内存空间,执行调度的基本单位。
内核线程:内核自己的线程,内核独用的。
僵尸进程和独儿进程:
僵尸进程:父进程创建一个子进程,会维护子进程的pcb,子进程运行结束了,父进程没有释放子进程,就形成了僵尸进程。
独儿进程:父进程创建一个子进程,会维护子进程的pcb,子进程结束之前,父进程结束了,就形成了独儿进程。操作系统会默认为独儿进程,提供一个公共的父进程。
内核进程调度器决定运行哪个进程,时长等。
进程调度:抢占式和非抢占式。
非抢占式:除非进程主动让出cpu(yielding),否则将一直运行该进程;
抢占式:由进程调度器强制开始或暂停(抢占)某一进程的执行;
进程调度算法:2.6采用CFS(Completely Fair Schedule)完全公平调度策略;按优先级分配时间片的比例;记录每个进程的执行时间,如果有一个进程执行时间不到应该分配给它的比例,优先执行;
浙公网安备 33010602011771号