Linux系统基础原理
一些基础知识补充(很零散,日后慢慢补充和加以扩展)
1、一个计算机的组成部分
硬件、内核(kernel)、库(库调用)、(系统调用)、应用程序
说明:
调用——去载入本人事先编辑好的功能模块,例如函数。系统调用的意思就是把应用程序的请求传递给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给函数
2、CPU的指令
(1)特权指令:只有内核才能够运行,完成硬件的一些工作
(2)用户指令:用户程序使用的指令,用户要想使用特权指令,需通过系统调用
3、用户空间和内核空间
linux操作系统和驱动程序运行在内核空间,而应用程序运行在用户空间。一旦用户模式中的指令发起了系统调用,则CPU运行在在了内核模式下,此时为内核空间。
4、内核的功用
我们所说的内核模式就是整个操作系统在进行下面这些功能的运行
(1)进程管理 (2)文件系统 (3)网络功能 (4)驱动管理 (5)安全功能
进程
1、process进程
含义:通常进程就是脚本读取文件的一个副本所运行的一个程序
存在生命周期:从创建到结束
2、进程创建
当一个系统启动时,先把内核放在CPU上执行,内核运行完后,由内核负责启动jinchegn,创建出第一个进程,通常是init进程,内核创建完init进程后,内核空间没有了,用户空间创造出来了,然后除了特权指令,都由init来创建进其他用户进程。
3、init
1)进程都由其父进程创建,主要两个步骤是fork()和clone()。意思大概就是新进程的创建是在内存中为新进程创建一个task_struct结构,然后将父进程的task_struct内容复制其中。(暂时缺乏足够的理解)
2)进程优先级
前提:进程是要执行的一个活动,主要是由CPU来执行,当有多个进程时,就有一个处理先后的过程。
0-139
a)1-99 :实时优先级,越大越优先
b)100-139:静态优先级,越小越优先
NICE值
用户用过调整进程的NICE值来改变进程的100-139的优先级
-20-19,:对应的100-139
3)进程内存的理解
1、假设:物理内存(是主机内存条的内存)只有一个,CPU只有一颗,当前系统运行多个进程,进程的执行是先内存存数据和指令,再通过CPU进行执行,那么内存是怎样合理划分内存来存放多个进程的呢?对于所有进程包括内存,不会直接访问硬件,而是通过内核来分配资源,内核自己占用一定内存,剩下的给进程使用,内核把剩余内存切割成固定大小的片段(不精确)——page frame,内核分配内存时,寻找空闲页框给进程,整个物理内存由大量页框组成,多个不连续的页框被分配给某进程使用,称为虚拟内存。
page frame:页框,用来存储页面数据
2、线性地址空间:进程以为自己能够占用的内存空间,进程只能够访问线性的,而不能访问物理的
物理地址空间:和线性是离散对应的,参考页框。和线性地址是一个映射的关系
3、MMU :Memory Mangement
Unit: 内存管理单元,当一个进程被加载至cpu上运行时,把它的映射关系放在MMU这个芯片上,负责完成地址的实时转换,即把虚拟地质转换为物理地址,分配给进程所需要的内存使用
4、IPC:Inter Process Conmunication,进程间通信
a)同一主机上:
signal:信号
shm:shared memmory,共享内存
b)不同主机上
rpc:remote process call,远程过程调用
socket:套接字
3)进程类型
1、守护进程:在系统引导过程中的启动的进程,与终端无关
2、用户进程:与终端相关,通过终端启动
4)进程的状态
运行态:running,有分给内存运行
就绪态:ready,未分给内存
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
僵死态:zombie
5)进程的分类:
CPU-Bound :非交互型的,占用内存多
IO-Bound :交互型的