Linux程序设计:操作系统概论及Linux系统基本概念

tech2022-08-25  112

目录

计算机的基本组成

计算机部件:顶层视图

指令周期

取指令和执行指令

理想计算机的特征

程序执行的例子

操作系统的概念

操作系统的目标

计算机系统的层次视图

​操作系统提供的服务

操作系统的主要特性、发展及特性

Linux操作系统的基本构成

内核(kernel)

查看内核源码

Linux操作系统的基本概念

启动流程

BootLoader(uboot)

init进程

内存管理

虚拟内存

段页式内存管理

系统调用

Linux进程的运行状态

UNIX标准


计算机的基本组成

处理器(processor)

-

主存储器(main memory)

易失性的

Real memory OR primary memory

输入输出模块(I/O modules)

二级存储设备

通信设备

终端(人机交互设备)

系统总线(system bus)

为处理器,主存,和输入/输出模块间提供通讯的设施

计算机部件:顶层视图

存储地址寄存器(MAR)

确定下一次读写的存储器地址

存储缓冲寄存器(MBR)

写入存储器的数据

从存储器中读出的数据

I/O地址寄存器(I/O AR)

确定一个特定的输入/输出设备

I/O 缓冲寄存器(I/O BR)

缓存输入/输出设备与处理

器间的交换数据

程序计数器(PC)

包含将取指令的地址

指令寄存器(IR)

包含最近取的指令内容

指令周期

处理器执行的程序由一组指令组成

一个单一的指令执行称为一个指令周期

一个指令的执行需要两个步骤

处理器从存储器读一条指令

fetch

处理器执行指令

excute

取指令和执行指令

取指令

处理器从程序计数器(PC)保存的寄存器地址中取指令,存放在指令寄存器(IR)中。

执行指令:

处理器解析IR中的指令并执行对应操作。这些操作分为四类:

处理器-存储器

在存储器和处理器之间传递数据

处理器-I/O

处理器和I/O模块间传递数据

数据处理

数据的算术操作和逻辑操作

控制

改变执行顺序

理想计算机的特征

注:

a:指令寄存器中的存储格式

b:数据寄存器中的存储格式

程序执行的例子

将地址940的存储单元中的内容与地址为941的存储单元中的内容相加,并将结果保存在后一个单元

操作系统的概念

应用程序和系统硬件之间的接口

控制应用程序执行的程序

操作系统与普通的计算机软件相同

由处理器执行的一段和一组程序

操作系统经常释放控制,并且必须依赖于处理器才能

恢复控制

操作系统的目标

方便

是计算机更易于使用

有效

更有效的利用计算机资源

扩展的能力

不影响服务的情况下:有效的开发,测试和引入新的系统功能

计算机系统的层次视图

​操作系统提供的服务

程序开发

程序执行

I/O设备访问

文件访问控制

系统访问

错误检测和响应

内部或外部的硬件错误

存储器错误

设备故障

软件错误

算术溢出

试图访问被禁止的存储器单元

操作系统无法确认应用程序的请求

操作系统的主要特性、发展及特性

操作系统的主要特性

易扩展性

并发性

共享性

异步性

虚拟性

操作系统的发展

串行处理

简单批处理系统

多道程序批处理系统

分时系统

现代操作系统的特征

微内核体系结构

多线程

对称多处理

分布式操作系统

面向对象设计

批处理系统示意图

Linux操作系统的基本构成

内核

Shell

文件系统

应用程序

内核(kernel)

操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统。

控制系统和硬件之间的相互通信

决定着系统的性能和稳定性

查看内核源码

目录:/usr/src/kernels

Linux操作系统的基本概念

文件和文件系统

文件:数据或设备的一种逻辑组织

文件系统:文件间关系管理的一种逻辑组织

程序和进程

程序: 计算机执行的指令集和

进程: 程序的一个运行实例,操作系统资源分配的最小单位

线程(轻量级进程)

程序运行的基本单位,一个进程内部可以有一或若干线程同时运行

信号

Linux系统中进程 通信的一种技术,异步程序设计的基础

客户端和服务器

-

启动流程

芯片和部分外围电路的初始化

加载内核

加载最小文件系统

 

加载硬盘上的根文件系统

启动1号进程/sbin/init

BootLoader(uboot)

BootLoader就是在操作系统内核运行之前运行的一段小程序

初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

严重依赖于硬件,在嵌入式开发中里建立一个通用的

BootLoader几乎是不可能的。

在Linux中称为grub

init进程

Linux系统启动的第一个进程(1号进程),0号为内核进程(swapper进程)

执行/etc/init.d目录中的所有脚本文件,启动某些系统的服务

执行/sbin/getty 初始化0、1和2(标准输入、标准输出和标准错误)

执行/bin/login启动用户登录程序

管理孤儿进程

内存管理

进程隔离

保护独立的进程,防止互相干涉数据和存储空间

自动分配和管理

动态地分配,分配对程序员是透明的

支持模块化的程序设计

能够定义程序模块,并且动态地创建、销毁模块,改变模块大小

保护和访问控制

允许一部分内存可以由各种用户以各种方式进行访问

长期存储

关机后长时间保存信息

虚拟内存

虚存寻址

段页式内存管理

进程在虚拟内存中分为代码段、数据段和堆栈段

进程在段中有许多固定大小的块组成,这些块成为页

虚拟地址由段号、页号和页中偏移量构成

虚地址和贮存中实地址(物理地址)的动态映射。

缺页

消除了进程全部载入内存中

按需调页

系统调用

所谓系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。

Linux进程的运行状态

内核态

进程运行在内核空间

用户态

进程运行在用户空间

例:应用程序调用系统函数,进入内核态,调用完毕后进入用户态。

UNIX标准

ISO C

IEEE POSIX

在linux中用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准—POSIX标准。

这些系统调用编程接口主要通过C库(libc)实现的。

最新回复(0)