操作系统原理(一)操作系统概述和操作系统用户界面(上)

简介: 操作系统原理(一)操作系统概述和操作系统用户界面

操作系统初步认识


  操作系统给用户提供的功能主要包括:提供操作界面、控制程序运行、管理系统资源、配置系统参数、监控系统状态、工具软件集合。这些功能让用户跟高效地操作计算机,同时使得计算机的功能也更稳定。

  • 买回来的计算机首先需要给它装操作系统,如果不装操作系统,计算机能干什么

  想要清楚地知道如果没有操作系统,计算机能干什么就得清楚地知道计算机在开机的时候都做了哪些事情。一切的起点都是按下计算机的电源键。

  首先,计算机会加载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中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。由于RedHatCentOS默认会使用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来等待用户登录。


操作系统功能和定义


  • 应用程序运行需要操作系统提供哪些支持
  1. 操作系统将可执行程序放置到一个特定的目录(硬盘)下面。
  2. 操作系统将可执行程序装入到内存中,然后运行。
  3. 操作系统为可执行程序分配内存(不同的类型字节不一样)。
  4. 操控显卡,将需要展示的字符显示在显示器上(设备驱动的这样一个功能)。
  5. 操作系统控制死循环不独占CPU
  6. 程序退出,收回已分配的资源。
  • 操作系统的四大功能

  操作系统最核心的功能之一就是进程管理(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空间是按照如下形式分配的:

  1. 前面640K【0000–9FFF】:基本内存
  2. 中间128k【A000 – BFFF】:显卡显存
  3. 末尾256k【C000 – FFFF】:BIOS

  最后的这个BIOS又可以细分为三类:

  1. C0000 -- C7FFF:显示卡BIOS。
  2. C8000 -- CBFFF:IDE控制器BIOS。
  3. F0000 -- FFFFF:最后64KB,系统BIOS

  Basic I/O System(Firmware, 固件)。它不属于硬件也不属于软件,它以硬件的方式存在,但是它的内部是程序:

  它的中文就是基本的输入输出系统,顾名思义支持系统输入输出,位于最后64KBF0000 -- FFFFFBIOS的功能有三个:

  1. 完成系统的启动配置

  CMOS设置:

  1. 提供基本的设备I/O服务

  1. 系统的加电自检和启动

  计算机按下电源键就开始进行加电自检(POST)。加电自检的时候就开始初始化基本硬件,比如像CPU,内存和显卡等。自检正常不提示,错误的话则通过喇叭提示。

  按下PowerOn或者Reset键执行的第一条指令在FFFF0处。其指令如下:

JUMP POST; 
• 1

  POST位于系统BIOS内部,也就是跳转到加电自检。POST之后查找显卡BIOS,调用显卡BIOS,之后再依次查找其它设备执行相应设备的BIOS。最后显示启动画面,也就是BIOS信息,芯片组的型号,主板的信息等。

  再往后的话就是从硬盘/软盘/光驱/U盘读入OSOS启动后,由OS接管计算机。

  BIOS会首先去读硬盘或者软盘的一个特殊扇区,这个扇区就是硬盘或者软盘的首扇区。首扇区里面放的内容就是主启动记录MBR,放的内容是OS启动的相关信息(Main Boot Record),这个扇区512个字节。

  在每个分区的开始会记录一些特殊的内容:

  1. 绿色部分:分区启动扇区(Partition Boot Sector):BootLoader,PBR。
  2. 蓝色部分:主启动扇区(Main boot sector):主要功能就是完成OS加载或启动管理功能。提供菜单,让用户选择不同的启动项,实现多重启动。加载核心文件:直接指向可启动区加载操作系统;跳转:将启动管理功能转交给其他loader

  BIOSMBR的运行过程如下所示:

  1. POST->CMOS设置(硬盘启动)->读取MBR->控制权交给MBR
  2. MBR读取分区表(Partition Table),找到其中的活动分区(Active Partition),并确认其它的分区都不是活动分区MBR读取活动分区的第一个分区(分区引导记录PBR)并把它加载到内存中去。
  3. PBR继续控制后面的引导过程。
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
3月前
|
存储 安全 Shell
深入浅出操作系统:从原理到实践
【9月更文挑战第21天】在数字时代的浪潮中,操作系统扮演着至关重要的角色。本文将深入探究操作系统的奥秘,从其基本概念和核心原理出发,逐步引导读者理解操作系统的工作机制。我们将通过生动的例子和实用的代码片段,揭示操作系统如何管理计算机硬件资源、提供用户接口以及确保系统安全与性能优化。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇通往操作系统深层世界的大门。准备好跟随我们的脚步,一起探索这个让计算机变得生动起来的神奇软件吧!
80 8
|
3月前
|
XML 搜索推荐 Android开发
移动应用开发之旅:探索操作系统与用户界面的协同
【9月更文挑战第27天】在数字时代的浪潮中,移动应用成为连接用户与数字世界的桥梁。本文将深入探讨移动应用开发的核心——移动操作系统,并展示如何通过代码示例实现一个简单但功能完整的用户界面。从理解不同操作系统的特性到设计直观的用户交互,我们将一步步构建起移动应用的基石,揭示技术细节背后的哲学和创新精神。
|
2月前
|
安全 中间件 人机交互
探索操作系统:从内核到用户界面的全面解析
本文旨在深入探讨操作系统的本质、核心组件及其功能。通过分析操作系统的各个层次,包括内核、驱动程序、中间件及用户界面,揭示其背后的技术原理和设计思想。此外,本文还将讨论操作系统在现代计算中的重要性及其未来发展趋势。
|
3月前
|
Unix Linux Windows
操作系统的演变与基本原理
本文旨在深入探讨操作系统的历史演变过程及其背后的设计原理。通过对不同时期典型操作系统的分析,本文揭示了它们如何响应技术挑战和社会需求的变化。此外,文章还将阐述操作系统的核心功能和关键技术,如进程管理、内存管理和文件系统,并探讨这些技术如何影响计算机系统的性能和可靠性。通过综合历史案例和技术分析,本文希望为读者提供一个全面而深入的理解,为什么操作系统是现代计算不可或缺的基石。
58 1
|
3月前
|
存储 算法 安全
探索现代操作系统架构:从内核到用户界面的全方位剖析
本文深入探讨了现代操作系统的核心组成部分,包括内核、驱动程序、系统调用、文件系统以及用户界面。通过详细解析每个组件的功能和相互关系,揭示其背后的技术原理与发展趋势。我们将了解操作系统如何通过复杂的机制确保计算机系统的高效运行,并提高我们对操作系统设计的理解。
149 5
|
3月前
|
存储 安全 Linux
探索操作系统:从原理到实践
【9月更文挑战第14天】本文深入探讨了操作系统的核心概念,通过分析其设计原则和功能,揭示了操作系统如何管理计算机硬件资源、提供用户接口并确保系统安全。文章不仅阐述了操作系统的基本原理,还通过实际代码示例展示了如何在操作系统上进行编程,旨在帮助读者更好地理解并应用操作系统知识。
43 1
|
3月前
|
算法 调度 UED
操作系统中的进程管理:原理与实践
在数字世界的心脏跳动着无数进程,它们如同细胞一般构成了操作系统的生命体。本文将深入探讨进程管理的奥秘,从进程的诞生到成长,再到最终的消亡,揭示操作系统如何协调这些看似杂乱无章却又井然有序的活动。通过浅显易懂的语言和直观的比喻,我们将一起探索进程调度的策略、同步机制的重要性以及死锁问题的解决之道。准备好跟随我们的脚步,一起走进操作系统的微观世界,解锁进程管理的秘密吧!
73 6
|
3月前
|
物联网 Linux Android开发
探索操作系统的核心:从命令行到图形用户界面的演变
在数字时代的浪潮中,操作系统作为计算机硬件与软件之间的桥梁,其发展历程映射了技术进步的足迹。本文将通过浅显易懂的叙述,带领读者一探究竟,从早期的命令行界面(CLI)到现代图形用户界面(GUI)的转变,揭示这一变迁背后的意义及其对日常生活的深远影响。
55 1
|
4月前
|
存储 缓存 Linux
深度探索Linux操作系统 —— Linux图形原理探讨3
深度探索Linux操作系统 —— Linux图形原理探讨
66 9
|
3月前
|
存储 算法 调度
深入理解操作系统:从内核到用户界面
【9月更文挑战第1天】 本文将带你走进操作系统的世界,探索其核心组件和功能。我们将从内核开始,逐步解析文件系统、内存管理、进程调度等关键概念。同时,我们也将探讨操作系统如何与硬件交互,以及用户界面的重要性。无论你是计算机专业的学生,还是对操作系统感兴趣的普通读者,这篇文章都将为你提供宝贵的知识和见解。
60 2