Linux的基本组成


用户进程

图形用户界面         服务器        命令行


Linux内核

系统调用        进程管理        内存管理        设备驱动程序


硬件

中央处理器(CPU)        主内存(RAM)        磁盘        网络端口


进程是指计算机中运行的所有程序,由内核统一管理,它们组成了最顶层,称为用户空间,也叫用户进程。


主内存(main memory)

内核和进程就在主内存中进行


内核负责管理以下四个方面:

进程:内核决定哪个进程可以使用CPU

内存:内核管理所有的内存,为进程分配内存,管理进程间的共享内存以及空闲内存

设备驱动程序:作为硬件系统和进程之间的接口,内核负责操控硬件设备

系统调用和支持:进程通常使用系统调用和内核通信


进程管理:

任何一个特定的时间内只能有一个进程可以使用CPU

多个进程轮流使用CPU

时间单位为毫秒级

一个进程让出CPU使用权给另外一个进程称为上下文切换(context switch)

内核负责上下文切换

工作原理:

1.CPU为每个进程计时,到时即停止进程,并切换至内核模式,由内核接管CPU控制权

2.内核记录下当前CPU和内存的状态信息,这些信息在恢复被停止的进程时需要用到

3.内核执行上一个时间段内的任务

4.内核准备执行下一个进程,从准备就绪的进程中选择一个执行

5.内核为新进程准备CPU和内存

6.内核将新进程执行的时间段通知CPU

7.内核将CPU切换至用户模式,将CPU控制权交给新进程

内核是在上下文切换的时间段间隙中运行的

进程管理涉及进程的启动、暂停、恢复、终止


内存管理:

内存在上下文切换中管理内存

MMU(Memory Management Unit)内存管理单元

MMU使用虚拟内存的访问机制


System call (systemcall) 系统调用

打开、读取和写文件这些操作都涉及到系统调用fork( )和exec( )

fork( ):当进程调用fork( )时,内核创建一个和该进程几乎一模一样的副本

exec( ):当进程调用exec( program)时,内核启动program来替换当前的进程

除了init以外,Linux中的所有用户进程都是通过fork( )来启动的

除了创建副本外,大多数情况下还可以使用exec( )来启动新的进程

例如你在命令行运行ls命令来显示目录内容,当你的终端窗口中输入ls时,终端窗口中的shell调用fork( )创建一个shell的副本,然后该副本调用exec( )来运行ls

shell即为命令行界面

Linux使用了一个增强型版本的Bourne shell ,我们称之为bash或Bourne-again shell

大部分Linux系统的默认shell是bash,通常有一个符号链接为/bin/sh

你可能感兴趣的:(Linux的基本组成)