【计算机原理】操作系统结构


前言

本文为 《图解系统》系列文章的个人学习笔记,对具体知识点与示例进行了归纳整理,详细内容参考小林coding



一、内核

内核基本功能

计算机是由各种外部硬件设备组成的,比如内存、cpu、硬盘等。如果每个应用都要和这些硬件设备对接通信协议,那这样太累了,所以需要一个「中间人」来屏蔽硬件设备的处理细节,并为应用层程序提供服务。这个「中间人」就是内核

**内核(Kernel)**作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。

现代操作系统中,内核具有 4 个基本能力:

(1)管理进程/线程:决定哪个进程、线程使用 CPU,也就是进程调度的能力。
(2)管理内存:决定内存的分配和回收,也就是内存管理的能力。
(3)管理硬件设备:为进程与硬件设备之间提供通信能力,也就是硬件通信能力。
(4)**提供系统调用:**如果应用程序要运行更高权限运行的服务,那么就需要有系统调用,它是用户程序与操作系统之间的接口。

在这里插入图片描述

内核工作方式

内核具有很高的权限,可以控制 cpu、内存、硬盘等硬件,而应用程序具有的权限很小。因此大多数操作系统,把内存分成了两个区域:

内核空间:只有内核程序可以访问;
用户空间:专门给应用程序使用;

因此,用户空间的代码只能访问一个局部的内存空间,而内核空间的代码可以访问所有内存空间。当程序使用用户空间时,我们常说该程序在用户态执行,而当程序使内核空间时,程序则在内核态执行。

内核程序执行在内核态,用户程序执行在用户态。应用程序如果需要进入内核空间,就需要通过系统调用,下面来看看系统调用的过程:

当应用程序使用「系统调用」时,会产生一个中断。发生中断后, CPU 会中断当前在执行的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序。内核处理完后,主动触发中断,把 CPU 执行权限交回给用户程序,回到用户态继续工作。

用户态/内核态切换

内核架构

对于内核的架构一般有这三种类型:

宏内核,包含多个模块,整个内核像一个完整的程序,包含了进程调度、内存管理、文件系统、设备驱动等模块,都运行在内核态。
微内核,有一个最小版本的内核,内核只保留最基本的能力,一些模块和服务则由用户态管理。
混合内核:是宏内核和微内核的结合体,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序。

不同内核架构

Linux 的内核设计是采用了宏内核,Window 的内核设计则是采用了混合内核。

这两个操作系统的可执行文件格式也不一样,Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值