计算机基础

更新时间:2021-09-08

更新版本:v1.0

一、计算机基础

1.1 计算机系统

1.1.1 硬件系统

1.1.1.1 主机
1.1.1.1.1 CPU
1.1.1.1.2 内存
1.1.1.2 外部设备
1.1.1.2.1 外部存储器
1.1.1.2.2 输入设备
1.1.1.2.3 输出设备
1.1.1.2.4 其他设备

1.1.2 软件系统

1.1.2.1 系统软件
1.1.2.2 应用软件

1.2 用户态和内核态

计算机硬件资源都是操作系统内核进行管理的,目前操作系统都是基于多任务、多用户的。如果每个用户进程都可以随便访问操作系统内核的模块,改变状态,那整个操作系统的稳定性、安全性都大大降低。为了将内核程序与用户程序隔离开,在硬件层面上提供了一次机制,将程序执行的状态分为了不同的级别,从0到3,数字越小访问级别越高。0代表内核态,在该特权级别下,所有内存上的数据都是可见的,可访问的。3代表用户态,在这个特权级下,程序只能访问一部分的内存区域,只能执行一些限定的指令。

1.2.1 内核态

cpu 可以访问内存的所有数据,包括外围设备,例如硬盘、网卡。cpu 也可以将自己从一个程序切换到另一个程序。

1.2.2 用户态

只能受限的访问内存,且不允许访问外围设备,占用 cpu 的能力被剥夺,cpu 资源可以被其他程序获取。

1.2.3 用户态到内核态切换

所有用户程序都是运行在用户态的,但是有时候程序确实需要做一些内核态的事情,例如从硬盘读取数据,或者从键盘获取输入等。而唯一可以做这些事情的就是操作系统,所以此时程序就需要先操作系统请求以程序的名义来执行这些操作。这时需要一个这样的机制: 用户态程序切换到内核态,但是不能控制在内核态中执行的指令。这种机制叫系统调用,在 CPU 中的实现称之为陷阱指令(Trap Instruction)。

1.2.3.1 系统调用

系统调用是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。比如前例中 fork() 实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如 Linux 的 int 80h 中断。

1.2.3.2 异常

当 CPU 在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

1.2.3.3 中断

当外围设备完成用户请求的操作后,会向 CPU 发出相应的中断信号,这时 CPU 会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

1.2.3.1 工作流程
  • 用户态程序将一些数据值放在寄存器中,或者使用参数创建一个堆栈(stack frame),以此表明需要操作系统提供的服务。
  • 用户态程序执行陷阱指令
  • CPU 切换到内核态,并跳到位于内存指定位置的指令,这些指令是操作系统的一部分,他们具有内存保护,不可被用户态程序访问
  • 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler)。他们会读取程序放入内存的数据参数,并执行程序请求的服务
  • 系统调用完成后,操作系统会重置CPU为用户态并返回系统调用的结果

当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

1.3 用户和内核空间

1.3.1 用户空间

用户空间(User space)是用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响。只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(system call),才能向内核发出指令。

1.3.2 内核空间

内核空间(Kernel space)是 Linux 内核的运行空间,可以执行任意命令调用系统的一切资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值