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

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

操作系统启动过程


  操作系统的启动是从加电到用户工作环境准备好的过程。主要包括初始引导核心初始化系统初始化等。

  初始引导的目的是把OS核心装入内存并使之开始工作接管计算机系统。

  其过程可描述为:

  1. 加电,JUMP POST
  2. BIOS中的启动程序运行
  3. 启动程序:读取0面0道第1扇区内容(MBR),加载MBR中的引导程序
  4. 引导程序:根据相关参数,读取硬盘指定位置的文件到内存,加载硬盘上OS内核,并初始化基本参数。操作系统内核放在什么地方,如何初始化,其相关参数在这里都可以找到。常见的引导程序有ntldr、GRUB、bootmgr和LILO。其中GRUB最常见。

  OS内核逐步加载OS剩余部分,最后完成控制计算机。

  核心初始化目的是OS内核初始化系统的核心数据。典型工作是各种寄存器的初始化,存储系统和页表初始化,核心进程构建等。

  系统初始化为用户使用系统作准备,使系统处于待命状态。主要工作是初始化文件系统,初始化网络系统,初始化控制台,初始化图形界面。

  Windows的启动过程:

  1. 加电自检(POST)之后BIOS启动主机自检程序。
  2. 初始引导:BIOS从MBR读入引导程序,装入内存的特定位置。
  3. 引导程序启动DOS7.0,调入操作系统核心。WINDOWS开始接管系统。
  4. 核心初始化:资源状态、核心数据等初始化;
  5. 系统初始化:GUI界面生成,系统处于待命/消息接受状态。


操作系统生成


  操作系统是满足特定硬件环境和用户需要(比如有些场景下不需要网络等),组装构建操作系统的过程。

  操作系统生成的主要步骤是:

  1. 根据硬件环境/用户要求配置功能模块构造参数
  2. 构建OS镜像(依据用户需要重新编译操作系统源代码)。

  要生成一个操作系统有三个前提:1. 操作系统由可拆装模块构成。2. 有交互式配置工具。3. 有映像构建(build)工具(把第二步得到的源代码重新编译)。

  Linux操作系统的生成主要可以分为以下六个步骤:

  1. 获取Linux内核的源代码
http://www.kernel.org/
# cd /usr/src
# tar zxvf linux-2.6.38-12.tar.gz
  1. 选择和启动内核配置程序
# cd /usr/src/linux-2.6
# make config(文本界面,不推荐使用)
# make xconfig(图形窗口模式,xWindow使用)
# make menuconfig(文本选择界面,字符终端)

  make menuconfig命令之后得到的界面如下:

  用空格键就可以选择是否需要这个模块。

  1. 根据需要配置内核模块和参数

  在第二步的配置中会遇到类似下图这样的一些选项:

  做完之后默认的操作系统源代码就被修改了。接下来重新编译即可。

  1. 重新编译新的内核
# make dep 生成依赖dependency信息
# make clean 清楚旧的编译结果
# make bzImage ./arch/i386/boot/bzImage
  1. 编译和安装模块
# make modules
# make modules_install 
模块被编译且安装到/usr/lib<内核版本号>目录下。
  1. 启动新内核

  让刚刚编译好的操作系统内核生效即可:

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()都是。系统调用一般涉及核心资源或硬件的操作。系统调用主要运行于核态。每一个系统调用都有一个唯一的编号,操作系统会提供一系列的系统调用给用户。系统调用在调用过程中会产生中断,这个中断是自愿中断。

相关实践学习
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