操作系统专题:基础

简介

操作系统是计算机体系结构、程序设计语言、数据结构、算法的综合性学科,而在操作系统中的CPU资源、IO资源的合理分配以及线程调度等重要概念有重要的思想,而操作系统是可以理解成是接近底层硬件资源管理的庞大软件,这对我们开发其他软件获取软件开发架构思想有着很大的启发。

操作系统的启动及基础概念

计算机基本组成

计算机基本组成由CPU、I/O、内存等组成

在这里插入图片描述

操作系统:一开始并没有加载到内存中而是存储在Disk中,然后由BIOS(基本IO处理系统)提供支持,BIOS在计算机通电开机后会执行检查外设,检查完外设后就可以加载指定的软件,除了OS存储在Disk以外还有bootloader,bootloader是负责加载OS,而bootloader是存储在Disk第一个引导扇区.

  1. BIOS会从将bootload从Disk的引导扇区(512字节)中加载到0x7c00地址的内存中,并跳转到CS:IP=0000:7c00(当跳转到这个地址时所有操作都由bootloader来掌控)
  2. bootloader将OS的代码和数据从Disk加载到内存中,并跳转到OS的起始地址(当跳转到这个地址时所有操作都由OS来掌控)
    在这里插入图片描述

过程图解

在这里插入图片描述

基本概念

用户态、内核态

用户态:当应用程序在访问一些特权指令的时候,用户态不能直接访问一些特殊的机器指令或者不能直接访问IO

内核态:当操作系统在执行的过程中,内核态可以执行操作系统的任何一个指令

用户态的切换

当应用程序通过库(Library Code)或直接的调用系统调用接口(System Cell Interface),一旦访问了系统调用接口会触发从用户态切换到内核态的过程.

跨越操作系统边界的开销

在执行时间上的开销超过程序调用

开销主要包括:

1.建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销

2.建立内核堆栈

3.验证函数参数

4.内核态映射到用户态的地址空间,更新页面映射权限

5.内核态独立地址空间 TLB

系统调用、异常、中断

1、系统调用(来源与应用程序):应用程序主动向操作系统发出服务请求

2、异常(来源不良的应用程序):非法指令或者其他坏的处理状态(比如内存出错)

3、中断(来源与外设):来自不同的硬件设备的计时器和网络中的中断

中断处理

在硬件方面:

设置中断标记【CPU初始化】

1、将内部、外部事件设置中断标记

2、中断事件的ID

在软件方面:

1、保存当前处理状态

2、中断服务程序处理

3、清除中断标记

4、恢复之前保存的处理状态

异常:异常编号

保存现场

异常处理

1、杀死产生了异常的程序

2、重新执行异常指令

恢复现场

有些异常是由于OS服务不到位导致的,所以需要产生异常,并且重新执行应用程序,此时OS将产生异常的原因修复好了就可以正常执行了

系统调用

有一些应用程序的操作需要系统来执行,所以在系统层面向上层应用程序暴露的接口(即系统调用接口)

比如:printf()会触发系统调用write()接口

系统调用API接口

Win32 API用于Windows

POSIX API用于POSIX-based systems (包括UNIX,LINUX,Max OS X的所有版本)

Java API用于Java虚拟机(JVM)

通常情况下,与每个系统调用相关的序号

1、系统调用接口根据这些序号来维护表的索引

系统调用接口调用内核中预期的系统调用

1、并返回系统调用的状态和其他任何返回值

用户不需要知道系统调用是如何实现的

1、只需要获取API和了解操作系统将什么作为返回结果

2、操作系统调用的细节大部分都隐藏在API中

3、通过运行程序支持的库来管理(用包含编译器的库来创建函数集)

区别

从源头区分

1、中断:外设

2、异常:应用程序意想不到的行为

3、系统调用:应用程序请求操作系统提供服务

从处理时间区分

1、中断:异步

2、异常:同步

3、系统调用:异步或同步

从响应区分

1、中断:持续,对用户应用程序是透明的

2、异常:杀死或者重新执行意想不到的应用重新指令

3、系统调用:等待和持续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值