Linux操作系统概述
操作系统在整个计算机系统所处的位置
操作系统执行C程序的过程
一个简单的C程序在操作系统下运行,操作系统的执行过程是怎样到的?
文件名:test.c
#include <stdio.h>
main()
{
printf("Hello world\n");
return 0;
}
用户对这个程序编译并链接
gcc test.c -o test
形成一个可执行的二进制文件test,在Linux下执行该程序./test
执行过程如下:
- 用户告诉操作系统执行test。
- 操作系统通过文件名在磁盘找到该程序
- 检查可执行代码首部,找出代码和数据存放的地址
- 文件系统找到第一个磁盘块
- 操作系统建立程序的执行环境
- 操作系统把程序从磁盘装入内存,并跳到程序开始处执行
- 操作系统检查字符串的位置是否正确
- 操作系统找到字符串被送往的设备
- 操作系统将字符串送往输出设备窗口系统确定这是一个合法的操作,然后将字符串转换成像素
- 窗口系统将像素写入存储映像区
- 视频硬件将像素表示转换成一组模拟信号控制显示器(重画屏幕)
- 显示器发射电子束,最后在屏幕上看到Hello world。
操作系统的组成
从操作系统设计者的角度考虑,一个操作系统必须包含以下几部分
(1)操作系统接口
(2)CPU管理
(3)内存管理
(4)设备管理
(5)文件管理
用一组简单的公式来描述操作系统的组成要素
操作系统 = 内核+系统程序
系统程序 = 编译环境+API(应用程序接口)+AUI(用户接口)
编译环境 = 编译程序+连接程序+装载程序
API = 系统调用+语言函数库(C、C++、Java等)
AUI =shell + 系统服务例程(如X服务器等)+应用程序(浏览器、字处理、编辑器等)
整个软件系统:
软件系统 = 操作系统+AUI
操作系统最底层的组件是内核,其上层大捡了许多系统程序。
系统程序包括三个部分,分别是编译环境,应用程序接口和用户接口。
编译环境包括汇编、C等高级语言编译程序、连接程序和装载程序,这些程序负责将文本格式的程序语言
转变为机器能识别和装载的机器代码。
应用程序接口(API)包含内核提供的系统调用接口和语言库。系统调用是为了能让应用程序使用内核提
供的服务;语言库函数则是为了方便应用程序开发,所以将一些常用的基础功能预先编译以供使用,比如对C语言来说有常用的C库等。
用户接口(AUI)包括shell、系统服务程序和常用的应用程序。
操作系统标准POSIX
POSIX表示可移植操作系统接口。该标准由IEEE制定,并由国际标准化组织接受为国际标准。任何操作系统只要符合POSIX 1003.1这一标准,就可以运行UNIX程序