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

目录

计算机的基本组成

计算机部件:顶层视图

指令周期

取指令和执行指令

理想计算机的特征

程序执行的例子

操作系统的概念

操作系统的目标

计算机系统的层次视图

​操作系统提供的服务

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

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)实现的。

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/108372813