操作系统原理(一)操作系统概述和操作系统用户界面
文章目录
- 操作系统初步认识
- 操作系统功能和定义
- 分时技术与分时操作系统
- 操作系统启动过程
- BIOS和主引导记录MBR
- 操作系统启动过程
- 操作系统生成
- 用户界面
- 系统调用
操作系统初步认识
操作系统给用户提供的功能主要包括:提供操作界面、控制程序运行、管理系统资源、配置系统参数、监控系统状态、工具软件集合。这些功能让用户跟高效地操作计算机,同时使得计算机的功能也更稳定。
- 买回来的计算机首先需要给它装操作系统,如果不装操作系统,计算机能干什么?
想要清楚地知道如果没有操作系统,计算机能干什么就得清楚地知道计算机在开机的时候都做了哪些事情。一切的起点都是按下计算机的电源键。
首先,计算机会加载BIOS
,这是计算机上最接近硬件的软件,各家主板制造商都会开发适合自己主板的BIOS
,而BIOS
中一项很重要的功能就是对自身的硬件做一次健康检查,只有硬件没有问题,才能运行软件,记住,操作系统也是一种软件。这种通电后开始的自检过程被称为“加电自检”,英文中称为Power On Self Test
,简称POST
。如果所有的硬件自检通过,一般都会发出一次“滴”的短声提示,说明硬件一切正常。之后再引导操作系统。所以不装操作系统,计算机也能够运行程序。下图是常见的CMOS
开机引导项启动设置界面,可以设置从硬盘启动,U
盘启动还是光驱启动等。
不安装操作系统计算机也能运行类似上图这样的程序。没有安装操作系统的话,普通用户不能够正常使用。既然操作系统也是一种软件,那操作系统这个系统软件和普通软件有什么区别呢?
定义不同:1、系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。2、应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件,可以拓宽计算机系统的应用领域,放大硬件的功能。
运行环境不同:1、操作系统可以直接安装到相应的硬件设备上,比如常见
Windows
系统就直接安装在电脑中。2、应用软件不能直接安装在无操作系统的电脑中。对硬件的控制权限不同:1、操作系统直接控制电脑或者电子设备的硬件,管控所载设备一切硬件操作。2、应用软件,不能直接控制所在平台硬件。
机器自检通过后,下面就要引导系统了。这个动作是BIOS
设定的,BIOS
默认会从硬盘上的第0
柱面、第0
磁道、第一个扇区中读取被称为MBR
的东西,即主引导记录。一个扇区的大小是512
字节,存放的内容是一段引导程序和分区信息,其中引导程序部分占用446
字节,另外64
字节是磁盘分区表DPT
,最后两字节是MBR
的结束位。这512
字节的空间内容是由专门的分区程序产生的,比如说Windows
下的fdisk.exe
,或者Linux
下的fdisk
命令,所以它不依赖于任何操作系统,而MBR
中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。由于RedHat
、CentOS
默认会使用Grub
作为其引导操作系统的程序,而Grub
本身又比较大,所以常见的方式是在MBR
中写入Grub
的地址,这样系统实际会载入Grub
作为操作系统的引导程序。
Grub
是一个系统引导工具,通过它可以加载内核,从而引导系统启动。Grub
最重要的功能就是根据其配置文件加载kernel
镜像,并运行内核加载后的第一个程序/sbin/init
,这个程序会根据/etc/inittab
来进行初始化的工作。
Linux
将根据/etc/inittab
中定义的系统初始化配置si::sysinit:/etc/rc.d/rc.sysinit
执行/etc/rc.sysinit
脚本,该脚本将会设置系统变量、网络配置,并启动swap
、设定/proc
、加载用户自定义模块、加载内核设置等。
之后根据文件中设定的值来确定系统将会运行的runlevel
,默认的runlevel
定在“id:3:initdefault:”
中,其中的数字3
说明目前的运行级别定义为3
。值为3
,就会运行/etc/rc3.d/
下的所有脚本,如果值为5
,就会运行/etc/rc5.d/
下的所有脚本。之后运行/etc/rc.local
,生成终端或X Window
来等待用户登录。
操作系统功能和定义
- 应用程序运行需要操作系统提供哪些支持?
- 操作系统将可执行程序放置到一个特定的目录(硬盘)下面。
- 操作系统将可执行程序装入到内存中,然后运行。
- 操作系统为可执行程序分配内存(不同的类型字节不一样)。
- 操控显卡,将需要展示的字符显示在显示器上(设备驱动的这样一个功能)。
- 操作系统控制死循环不独占
CPU
。 - 程序退出,收回已分配的资源。
- 操作系统的四大功能:
操作系统最核心的功能之一就是进程管理(CPU
管理)。打开任务管理器,我们可以看到Windows
环境下多个“进程”在并发运行。但是我们只有一个CPU
,所以操作系统在管理多个程序共享CPU
。进程管理主要分为进程控制、进程调度、进程通信等。1. 进程控制主要包括创建进程、暂停进程、唤醒进程、撤销进程等。2. 进程调度主要是调度策略,处理进程之间的优先级关系。3. 进程通信主要是进程间的通信。
操作系统的第二大功能就是内存管理功能:内存分配、内存共享、内存保护、虚拟内存等。现代操作系统可以通过对内存的管理,让一个对内存需求很大的应用程序能够在较小的内存中顺利运行。
操作系统的第三大功能是设备管理功能。应用程序通过使用操作系统提供的接口间接地使用各种各样的外设。操作系统负责管理外设,给应用程序分配外设,调度设备。操作系统主要功能是对设备的分配和调度,实现设备的无关性(设备独立性是指 操作系统把所有 外部设备统一当作成文件来看待,只要安装它们的 驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。)和设备驱动。
操作系统的第四个功能就是文件管理功能。文件管理功能包括存储空间的管理(硬盘的管理、硬盘空间的分配),文件的操作、目录的操作(新建文件、删除文件、新建目录、删除目录),还有存取权限的管理。
判断一个软件是不是操作系统,就看这个软件有没有上述的管理进程,管理内存这两个功能。有一些嵌入式操作系统在特定场合可以不要设备管理和文件管理功能。
- 操作系统的定义
操作系统是一个大型系统程序。提供用户接口,方便用户控制计算机,负责为应用程序分配和调度软硬件资源,并控制与协调应用程序并发活动,帮助用户存取和保护信息。
分时技术与分时操作系统
60
年代,计算机硬件有两个重大进展:中断技术和通道技术。1. 中断技术:CPU
收到外部信号(中断信号)后,停止当前工作,转去处理该外部事件,处理完毕后回到原来工作的中断处(断点)继续原来的工作。2. 通道技术:专门处理外设与内存之间的数据传输的处理机。
随着用户对交互性高、响应快、支持多任务/多用户的程序的需求,出现了分时操作系统,实现多终端计算机。多终端计算机有一个高性能主机和多个终端:
主机提供运算,CPU
和内存。终端提供输入和显示。主机采用分时技术轮流为每个终端服务。每个终端都感觉到是“独占”主机。
- 分时技术:主机以很短的时间片为单位,把
CPU
轮流分配给每个终端使用,直到全部作业被运行完。由于时间片很短,在终端数量不多的情况下, 每个终端都能很快重新获得CPU
,使得每个终端都能得到及时响应。等待周期=时间片x终端数量。
- 实时操作系统:提供及时响应和高可靠性是实时操作系统主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。
- 分时操作系统:分时操作系统提供多路性:即众多联机用户可以同时使用一台计算机。提供独占性:各终端用户感觉到自己独占了计算机。
操作系统启动过程
BIOS和主引导记录MBR
计算机的工作模式有两种:实模式和保护模式。计算机刚刚加电处于的模式是实模式(REAL MODE
),在这个模式下程序按照8086
寻址方法访问0h-FFFFH
(1MB)空间。寻址方式为:物理地址(20位)=段地址加偏移地址的方式。CPU
采用单任务运行的方式。
另外一种是保护模式,是操作系统启动完成之后的一种模式,也被称作内存保护模式(PROTECT MODE
)。保护模式下面采用了段页式的寻址机制(段,页)。会用到虚拟地址,进程,封闭空间等。应用程序和操作系统的运行环境都被保护起来了。CPU
支持多任务。
实模式存取的1M
空间是按照如下形式分配的:
- 前面
640K
【0000–9FFF】:基本内存 - 中间
128k
【A000 – BFFF】:显卡显存 - 末尾
256k
【C000 – FFFF】:BIOS
最后的这个BIOS
又可以细分为三类:
C0000 -- C7FFF
:显示卡BIOS。C8000 -- CBFFF
:IDE控制器BIOS。F0000 -- FFFFF
:最后64KB,系统BIOS。
Basic I/O System
(Firmware, 固件)。它不属于硬件也不属于软件,它以硬件的方式存在,但是它的内部是程序:
它的中文就是基本的输入输出系统,顾名思义支持系统输入输出,位于最后64KB
的F0000 -- FFFFF
。BIOS
的功能有三个:
- 完成系统的启动配置
CMOS
设置:
- 提供基本的设备I/O服务
- 系统的加电自检和启动
计算机按下电源键就开始进行加电自检(POST
)。加电自检的时候就开始初始化基本硬件,比如像CPU
,内存和显卡等。自检正常不提示,错误的话则通过喇叭提示。
按下PowerOn
或者Reset
键执行的第一条指令在FFFF0
处。其指令如下:
JUMP POST;
POST
位于系统BIOS
内部,也就是跳转到加电自检。POST
之后查找显卡BIOS
,调用显卡BIOS
,之后再依次查找其它设备执行相应设备的BIOS
。最后显示启动画面,也就是BIOS
信息,芯片组的型号,主板的信息等。
再往后的话就是从硬盘/软盘/光驱/U盘读入OS
。OS
启动后,由OS
接管计算机。
BIOS
会首先去读硬盘或者软盘的一个特殊扇区,这个扇区就是硬盘或者软盘的首扇区。首扇区里面放的内容就是主启动记录MBR
,放的内容是OS
启动的相关信息(Main Boot Record
),这个扇区512
个字节。
在每个分区的开始会记录一些特殊的内容:
- 绿色部分:分区启动扇区(
Partition Boot Sector
):BootLoader,PBR。 - 蓝色部分:主启动扇区(
Main boot sector
):主要功能就是完成OS
加载或启动管理功能。提供菜单,让用户选择不同的启动项,实现多重启动。加载核心文件:直接指向可启动区加载操作系统;跳转:将启动管理功能转交给其他loader
。
BIOS
和MBR
的运行过程如下所示:
- POST->CMOS设置(硬盘启动)->读取
MBR
->控制权交给MBR
。 MBR
读取分区表(Partition Table),找到其中的活动分区(Active Partition
),并确认其它的分区都不是活动分区。MBR
读取活动分区的第一个分区(分区引导记录PBR
)并把它加载到内存中去。PBR
继续控制后面的引导过程。
操作系统启动过程
操作系统的启动是从加电到用户工作环境准备好的过程。主要包括初始引导、核心初始化、系统初始化等。
初始引导的目的是把OS核心装入内存并使之开始工作接管计算机系统。
其过程可描述为:
- 加电,JUMP POST
- BIOS中的启动程序运行
- 启动程序:读取0面0道第1扇区内容(MBR),加载MBR中的引导程序。
- 引导程序:根据相关参数,读取硬盘指定位置的文件到内存,加载硬盘上OS内核,并初始化基本参数。操作系统内核放在什么地方,如何初始化,其相关参数在这里都可以找到。常见的引导程序有ntldr、GRUB、bootmgr和LILO。其中GRUB最常见。
OS内核逐步加载OS剩余部分,最后完成控制计算机。
核心初始化目的是OS内核初始化系统的核心数据。典型工作是各种寄存器的初始化,存储系统和页表初始化,核心进程构建等。
系统初始化为用户使用系统作准备,使系统处于待命状态。主要工作是初始化文件系统,初始化网络系统,初始化控制台,初始化图形界面。
Windows的启动过程:
- 加电自检(POST)之后BIOS启动主机自检程序。
- 初始引导:BIOS从MBR读入引导程序,装入内存的特定位置。
- 引导程序启动DOS7.0,调入操作系统核心。WINDOWS开始接管系统。
- 核心初始化:资源状态、核心数据等初始化;
- 系统初始化:GUI界面生成,系统处于待命/消息接受状态。
操作系统生成
操作系统是满足特定硬件环境和用户需要(比如有些场景下不需要网络等),组装和构建操作系统的过程。
操作系统生成的主要步骤是:
- 根据硬件环境/用户要求配置功能模块和构造参数。
- 构建
OS
镜像(依据用户需要重新编译操作系统源代码)。
要生成一个操作系统有三个前提:1. 操作系统由可拆装模块构成。2. 有交互式配置工具。3. 有映像构建(build
)工具(把第二步得到的源代码重新编译)。
Linux
操作系统的生成主要可以分为以下六个步骤:
- 获取
Linux
内核的源代码
http://www.kernel.org/
# cd /usr/src
# tar zxvf linux-2.6.38-12.tar.gz
- 选择和启动内核配置程序
# cd /usr/src/linux-2.6
# make config(文本界面,不推荐使用)
# make xconfig(图形窗口模式,xWindow使用)
# make menuconfig(文本选择界面,字符终端)
make menuconfig
命令之后得到的界面如下:
用空格键就可以选择是否需要这个模块。
- 根据需要配置内核模块和参数
在第二步的配置中会遇到类似下图这样的一些选项:
做完之后默认的操作系统源代码就被修改了。接下来重新编译即可。
- 重新编译新的内核
# make dep 生成依赖dependency信息
# make clean 清楚旧的编译结果
# make bzImage ./arch/i386/boot/bzImage
- 编译和安装模块
# make modules
# make modules_install
模块被编译且安装到/usr/lib<内核版本号>目录下。
- 启动新内核
让刚刚编译好的操作系统内核生效即可:
cp bzImage /boot/bzImage
GRUB:配置/boot/grub/grub.conf
title newLinux build by Zhang San Feb 28.2018
root(hd0.1)
kernel /boot/bzImage ro root=/dev/had2
用户界面
脚本(Script
)通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较复杂的功能和人机交互。脚本程序保存在文本文件中,脚本程序是Shell命令语句的集合。
如下所示就是一个脚本程序:
#!bin/bash
# 创建临时文件
sudo mkdir /usr/temp
# 解压安装包到临时文件
sudo echo "正在解压文件"
sudo unzip -qd /usr/temp /HUSTLibV30.zip
sudo echo "解压完成"
# 拷贝安装文件
sudo cp -rf /usr/temp/HUSTLibV30/HUSTLib /usr/lib
# 使配置文件生效
sudo ldconfig
# 删除临时文件
sudo echo "正在删除临时文件"
sudo rm -rf /usr/temp
sudo echo "删除临时文件成功"
sudo echo "安装完成请重启"
创建完脚本程序之后可以用Chmod
命令来给脚本程序添加可执行权限。
系统调用
系统调用是操作系统内核为应用程序提供的服务/函数等,像printf()
,exit()
都是。系统调用一般涉及核心资源或硬件的操作。系统调用主要运行于核态。每一个系统调用都有一个唯一的编号,操作系统会提供一系列的系统调用给用户。系统调用在调用过程中会产生中断,这个中断是自愿中断。
操作系统原理(一)操作系统概述和操作系统用户界面相关推荐
- 操作系统原理: 操作系统概述
操作系统(OS)是一个系统软件,它处于硬件之上,应用软件之下.其层次架构在硬件和应用软件之间.操作系统完成对硬件的访问和控制,它有外壳(shell)对外部提供服务,和内核(Kernel)对硬件和硬件资 ...
- 操作系统概述 记录操作系统相关知识
操作系统 现代计算机系统由一个或多个处理器.主存.打印机.键盘.鼠标.显示器.网络接口以及各种输入/输出设备构成. 上面提到的这些东西都属于硬件资源,用户不会直接和硬件进行交互,计算机安装了一层软件, ...
- linux 写操作系统 pdf,Linux操作系统概述.pdf
Liux操作系统 一.概述 教材和参考资料 • E-Learning上将提供课程ppt以及部分文字资料 • L命令行与脚本编程大全 (第3版),R B,C B著, 门佳 .武海峰译, 人民邮电出版社 ...
- 【操作系统】:操作系统概述
1 操作系统的定义.功能.特征 1.1 操作系统的定义 操作系统(Operating System,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供 ...
- 操作系统学习笔记 操作系统概述
操作系统介于硬件和应用程序之间的一层软件结构,为程序的开发屏蔽了硬件细节,并提供一些列方便的接口. 操作系统主要提供以下几个方面的服务: 程序开发:操作系统提供程序开发的工具,如果编辑器,调试器,编译 ...
- 操作系统原理_好书推荐现代操作系统:原理与实现文末有福利
"等闲日月任西东,不管霜风著鬓蓬.满地翻黄银杏叶,忽惊天地告成功." -- (宋)葛绍体<晨兴书所见> 用这首诗来形容这本"银杏书"的诞生,实在是太 ...
- 计算机操作系统原理课件,【】计算机操作系统原理与实例分析PPT课件(完整版 全)精品.ppt...
[]计算机操作系统原理与实例分析PPT课件(完整版 全)精品 4.2 计算机I/O子系统的组成 4.2.1 I/O系统的结构 (1) 总线型I/O系统的结构 总线型I/O系统结构 (2) 通道型I/O ...
- 计算机操作系统教程 2 操作系统概述
1.操作系统的基本概念 计算机系统自上而下可粗分为四个部分:硬件.操作系统.应用程序和 用户(这里的划分与计算机组成原理的分层不同).操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与 ...
- 现代操作系统原理与实践01:操作系统概述
目录 1 什么是操作系统 1.1 操作系统的功能 1.1.1 对硬件进行管理和抽象 1.1.2 为应用提供服务和管理 1.3 操作系统的结构 1.4 操作系统的发展趋势 1.5 操作系统面临的挑战 1 ...
- 内功修炼之操作系统学习(一操作系统概述)。
一:操作系统概述. 操作系统:管理系统资源.控制程序运行.改善人机界面.提供各种服务,并合理组织计算机工作流程和为用户方便而有效的使用计算机提供良好的运行环境的最基本的系统软件 . 传统的操作系统中是 ...
最新文章
- 特约专栏丨孙茂松教授——自然语言处理一瞥:知往鉴今瞻未来
- 学习如何面对失败比成功更重要
- matlab中 intval函数,经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval...
- 14. Leetcode 80. 删除有序数组中的重复项 II (数组-同向双指针-快慢指针)
- 18、INSERT:插入数据(添加数据)
- 微信跳一跳高分系列一:解读 adb 工具
- raid卡的结构示意图
- AR Software
- 无法从套接字读取更多的数据 oracle_小伙面试时被追问数据库优化,面试前如何埋点反杀?
- 编码原则 之 Once and Only Once
- JSP——基础,处理流程
- 公司搞不好,除了坑股东,还坑的是客户
- surf算子匹配物体
- 内核防火墙netfilter入门
- CCS(Code Composer Studio) 的下载、安装和导入工程
- cookie.setValue一些注意事项
- 微信支付 发起商家转账API 2022年v3 transfer batches
- WIN11自定义版本镜像下载教程
- 【数仓】数据仓库高频面试题题英文版(1)
- postgresql 表分区
热门文章
- 如何用一头死驴赚到998元
- pyqt5 实现右键自定义_Python界面(GUI)编程PyQt5事件和信号
- Cocos2d-x音乐和音效概述
- CocosCreator2.3.1切换场景出现Failed to load scene ‘xxx‘ because ‘xxx‘ is already being loaded问题的解决方案
- 十、K8s 其他控制器(DS、RC、RS、STS)
- ELK详解(十)——Logstash收集Tomcat日志实战
- MySQL主从同步(五)——排错思路
- Windows2008R2自动更新造成的意外重启
- [jQuery] 速记一の屏蔽鼠标右键监听鼠标Event
- Uninstall JavaVM and Xcode On Mac OS X