学习Linux系统编程-Day(1)

本系列博客是对《Linux系统编程手册》的阅读笔记,从全书的第二章开始记载。
一、操作系统的两层含义
1.完整的软件包,包含管理计算机系统资源的核心层软件以及附带的所有标准软件(命令行解释器、图形用户界面、文本编辑器等)。
2.单独指负责管理计算机资源的核心层软件。
在书中,当提到操作系统时,往往指操作系统内核。

二、内核的职能
0.进程的概念:指一段程序的执行过程,这是一个动态概念。
1.进程调度:进程调度规则控制着哪些进程获得对 CPU 的使用,以及每个进程能使用多长时间,这两者都由内核进程调度程序(而非进程本身)决定。

2.内存管理,Linux采用了虚拟内存管理机制,这项技术有如下优点:
A.进程与进程之间、进程与内核之间彼此隔离,因此一个进程无法读取或修改内核或其他进程的内存内容。
B.只需将进程的一部分保持在内存中,这不但降低了每个进程对内存的需求量,而且还能在 RAM 中同时加载更多的进程。

3.提供了文件系统来负责对文件的创建、获取、更新和删除。

4.创建和终止进程:内核可将新程序载入内存,并为其提供所需的资源。

5.对外设的访问:内核不仅提供了访问外设的标准API,也在多进程访问同一外设时起到仲裁作用。

6.联网:以用户进程的名义收发网络消息(数据包),该任务包括将网络数据包路由至目标系统。

7.提供系统调用应用编程接口,这部分是面向系统编程者开放的内核功能接口,也是这本书的核心内容。

8.Linux作为多用户操作系统,还为每个用户都营造了虚拟私有计算机(Virtual Private Computer)的抽象,每个用户都可以登录进入系统,独立操作,而与其他用户大致无干。内核负责协调这其中可能出现的冲突和仲裁设备的使用。

三、用户态和核心态
CPU可以运行在至少两种不同状态下,也就是用户态和核心态。执行硬件指令可以使状态发生切换。和CPU状态对应的是虚拟内存空间也被划分为用户空间部分和内核空间部分,在用户态下只能访问用户空间部分,在内核态下既可以访问用户空间部分,也可以访问内核空间部分。
有不少特权指令只能在核心态下执行

四、shell
1.shell也就是我们常说的命令解释器,主要用于读取用户输入的命令,并执行相应的程序以
响应命令的程序
2.登录shell(login shell)指的是用户登录之后,由系统创建用以运行shell的进程。
3.对于Linux系统,shell还是属于用户进程,不是内核的一部分。
4.shell的作用不仅仅在于人机交互,对shell脚本进行解释也是其用途之一,所以shell中内置了很多和编程语言相关的内容。

猜你喜欢

转载自blog.csdn.net/zzy980511/article/details/113412272