How_Linux_Works阅读笔记

1概述

从认知科学中我们知道大脑在面对一个复杂事物时,会自动对事物进行归纳分组,降低认知难度。对于复杂的OS系统,一个人穷其一生也难以掌握全部细节,故为了理解一个系统,我们需要一定的抽象,从整体对系统有一个把握,然后针对需要再深入分析了解某一特定部分。本节对组成Linux系统的组件作一个较高层次的叙述。

1.1Linxu的抽象层次

 对事物比较好的理解方式是通过将事物进行分层,每一层提供某种程度的抽象。Linux大致可分成如下三个抽象层次(levels or layers)。

最底层为硬件层包括CPU、内存、磁盘、网络设备等。

中间层为内核层,内核常驻内存并控制CPU等硬件,作为用户进程与底层硬件的粘合剂,为底层硬件提供抽象接口以供用户进程调用。

最上为用户进程层,用户进程在内核的控制下运行,为最终用户提供用户空间的服务。

内核与用户进程最大的差别在于内核运行在内核态(kernel space),可以访问系统中的任何资源,如果出问题很容易导致整个系统的崩溃;用户进程运行在用户态(user space),只能访问系统中的一部分资源,如果出问题,内核可以处理有问题的进程,不会导致整个系统的崩溃。

1.2 硬件:内存

内存为CPU提供了输入和输出,这些输入和输出是0和1组成的块,代表了系统所处的不同状态(state),内核和进程的运行都通过加载到内存来实现。

1.3 内核

内核负责管理系统中的资源,主要包括如下4类:

1.    进程管理:内核负责进程的调度,控制进程使用CPU的时间;

2.    内存管理:内核负责内存的管理,跟踪哪些进程使用特定的内存、哪些内存是进程共享的,哪些是空闲的;

3.    设备驱动:内核通过设备驱动为硬件提供抽象接口供进程使用;

4.    系统调用:内核通过系统调用来提供进程与内核的通信接口;

1.3.1 进程管理

进程管理描述了进程的启动、暂停、恢复和终止,对一个多任务处理系统而言,多个任务运行在一个CPU上,每个进程会获得一个时间片(time slice),内核负责进程上下文的切换(context switch)

 1.3.2 内存管理

CPU中有一个MMU(MemoryManagement Unit)负责将进程的虚拟地址映射为实际的物理地址,内核通过内存页表(Page table)来初始化和管理每个进程的虚拟内存。

 

1.3.3 设备驱动和管理

设备一般在内核模式(kernel mode)才能访问,所以设备驱动常作为内核的一部分,并为用户进程提供了统一的接口,以简化软件开发人员的工作。

1.3.4系统调用

用户进程通过系统调用来访问部分用户态可用的内核特性,比如文件访问中打开、读取、写入就涉及到系统访问。另外两个很常见的、跟进程启动有关的系统调用为fork和exec,fork基本上就是复制一个进程,exec启动一个程序来代替当前的进程。除了init进程外,所有的用户进程都由fork复制而来,并且大部分用户进程会通过调用exec来启动一个新的程序来代替fork复制的老进程,以shell中运行ls命令为例,其过程如下:

除了系统调用外,Linux也支持虚拟设备(pseudodevices),比如/dev/random,这些这些设备对用户进程来说就像是真实的物理设备,只是他们是软件实现的,而不是硬件。

1.4用户空间(user space)

由内核分配给用户进程使用的内存空间称为用户空间(user space),进程只是程序在内存中的状态集。

1.5用户

Linux内核支持用户的概念,用户是拥有文件所有权以及运行程序的实体,每个用户有一个用户名,不过内核并非通过用户名来识别用户,而是通过userids的数字来识别用户的。最重要的用户就是root用户,也被称为超级用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值