Linux内核与设计 第一章 Linux内核简介

1.1 Unix的历史

发展

Unix虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统。

诞生于1969,由Dennis Ritchie 和 Ken Thompson 的灵感火花点亮的 Unix 已经成为一种传奇,它历经了时间的考研依然声名不坠。

从贝尔实验室失败的 多用户操作系统Multics 中涅槃而生。为此,设计了一个文件系统原型,最终演化成Unix。

由于Unix设计简洁并且公开源码 所以许多其他组织和团体都对它进行进一步开发。
加州大学伯克利的BSD 加入了不少修正补丁还继承了不少额外的软件(如今还在使用的csh,vi命令)
支持虚拟内存。 实现了任务管理、换页机制、TCP/IP特性。

由于最初一流的设计和以后多年的创新与逐步提高,Unix已成为强大健壮和稳定的操作系统。

特点

1.简洁

它的成功归结于其简洁和一流的设计,仅仅提供几百个系统调用并且有一个非常明确的设计目的

2.所有文件都被当成文件对待

这种抽象使得对数据和对设备的操作能通过一套相同的系统调用接口来进行的 open() read() write() lseek()和close()

3.内核和软件都是用c写的

在各种硬件体系架构都具备强大的移植能力。

4.创建进程非常迅速,并且有一个非常独特的fork()系统调用。

5.简单又稳定的进程间通信机制

策略和机制分离的设计理念 确保了Unix 系统具备清晰的层次化结构

如今

今天Unix已发展成为一个支持 抢占式多任务、多线程、虚拟内存、换页、动态链接和TCP/IP网络的现代化操作系统。

1.2追寻Linus足迹:Linux简介

作者Linus Torvalds

Linus Torvalds为Intel 80386 cpu 开发了一款全新的操作系统。
他热衷Minix (教学用Unix) 但是他不能修改和发布该系统的源代码由于license 这让他耿耿于怀并对这位老师的设计理念感到失望。
于是,像任何一个生机勃勃的大学生一样决心走出这种困境。
迅速成为多人合作开发项目。

Linux是类Unix系统

但它不是Unix。并未直接使用源代码。必要时,实现上是大相径庭的。
但他没有抛弃Unix的设计目标并且保证编程接口一致。

1.3 操作系统和内核简介

操作系统

操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分,包括内核、设备驱动程序、启动引导程序、命令行shell等用户界面、基本的文件管理工具和系统工具。

内核

用户界面是操作系统的外在表象,内核才是操作系统的内在核心。系统依靠其管理硬件设备、分配系统资源。
有时被称为管理者或操作系统核心。

组成

1.负责响应中断的中断服务程序
2.负责管理多个进程从而分配处理器时间的调度程序
3.负责管理进程地址空间的内存管理程序
4.网络、进程间通信
等系统服务组成

内核空间

现代系统提供保护机制。内核独立于普通应用程序,一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。
这种系统态和被保护的内存空间统称为内核空间。
应用程序在用户空间执行。处于用户态,不能直接访问硬件和内核划给别人的内存。

应用程序通过系统调用与内核通信。

调用库函数(如C库函数),由库函数通过系统调用界面,让内核代其完成任务。
一些库提供了系统调用不具备的许多功能,比如printf()提供了数据缓存和格式化,write()只是其中一个动作。
也有一一对应的比如open() 再如strcpy根本不需要直接调用系统级的操作。

当一个应用程序执行一个系统调用,称为内核正在代其执行 内核运行与进程上下文中。
应用程序通过系统调用界面陷入内核————是应用程序完成其工作的基本行为方式。

内核管理硬件设备

中断机制
硬件设备想和系统通信时,发异步中断信号打断处理器执行进而打断内核的执行。
内核通过中断号,查找相应的中断服务程序,并调用这个程序响应和处理中断。
为了保证中断服务程序能够第一时间响应和处理中断请求,它们在专门的中断上下文进行。

内核活动范围

这些上下文代表着内核活动的范围。每个处理器在任何指定时间点上的活动必然概括为下列三种情况

1.运行于用户空间,执行用户进程。

2.运行于内核空间,处于进程上下文,代表某个特定进程的执行。

3.运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。

CPU空闲时,内核运行一个空进程,处于第二种情况。

posted @ 2021-10-14 23:14  liv_vil  阅读(64)  评论(0)    收藏  举报