Linux编程基础(二)---------五个子模块详细记录

Process Schedule(进程管理) 

(Memory Manager)内存管理

VFS(Virtual File System)虚拟文件系统

Network(网络子系统)

IPC(Inter-Process Communication)进程间通信

1.进程调度(管理)的4个子模块以及实现功能

1)Scheduling Policy,实现进程调度的策略,它决定哪个(或哪几个)进程将拥有CPU

a.SCHED_OTHER 分时调度策略。即普通进程调度策略,它基于CFS, 它的特点是即使是最低优先级,他也能获得一定的时间片

b.SCHED_FIFO:(实时调度策略,先到先服务)高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出;对于同等优先级,先运行的进程会一直占据cpu, 只有等到先运行的进程主动退出,后续进程才能得到时间片。

c.SCHED_RR:(实时调度策略,时间片轮转)同上,高优先级会抢占低优先级,高优先级运行期间,低优先级没法抢占,只能等到高优先级主动退出, ;对于同等优先级的进程,各个进程会轮流运行一定的时间片(大约100ms)

:时间片:即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。 如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。 如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。

:CFS:完全公平调度程序:允许对使用该策略调度的所有线程进行公平处理器访问,当有大量线程或数据吞吐量是优先级时,此策略最有用,因为它可以更有效地调度线程。

/*********************理解******************/

SCHED_RR 和SCHED_FIFO都是高优先级进程抢占低优先级进程,但是在SCHED_RR中,对于同级别优先级的进程,进程会轮流运行,而SCHED_FIFO则是先运行的进程退出之后其余的进程才会得到时间片的分配

2)Architecture-specific Schedulers,体系结构相关的部分,用于将对不同CPU的控制,抽象为统一的接口。这些控制主要在suspend和resume进程时使用,牵涉到CPU的寄存器访问、汇编指令操作等。

3)Architecture-independent Scheduler,体系结构无关的部分。它会和“Scheduling Policy模块”沟通,决定接下来要执行哪个进程,然后通过“Architecture-specific Schedulers模块”resume指定的进程。

4)System Call Interface,系统调用接口。进程调度子系统通过系统调用接口,将需要提供给用户空间的接口开放出去,同时屏蔽掉不需要用户空间程序关心的细节。

2.Memory Manager内存管理的3个子模块及实现功能

1)Architecture Specific Managers,体系结构相关部分。提供用于访问硬件Memory的虚拟接口。

2) Architecture Independent Manager,体系结构无关部分。提供所有的内存管理机制,包括:以进程为单位的memory mapping;虚拟内存的Swapping。

3)System Call Interface,系统调用接口。通过该接口,向用户空间程序应用程序提供内存的分配、释放,文件的map等功能。

3.VFS子系统的6个子模块及实现功能

1) Device Drivers,设备驱动,用于控制所有的外部设备及控制器。由于存在大量不能相互兼容的硬件设备(特别是嵌入式产品),所以也有非常多的设备驱动。因此,Linux内核中将近一半的Source Code都是设备驱动,大多数的Linux底层工程师都是在编写或者维护设备驱动,而无暇顾及其它内容(它们恰恰是Linux内核的精髓所在)。

2) Device Independent Interface, 该模块定义了描述硬件设备的统一方式(统一设备模型),所有的设备驱动都遵守这个定义,可以降低开发的难度。同时可以用一致的形势向上提供接口。

3) Logical Systems,每一种文件系统,都会对应一个Logical System(逻辑文件系统),它会实现具体的文件系统逻辑。

4) System Independent Interface,该模块负责以统一的接口(快设备和字符设备)表示硬件设备和逻辑文件系统,这样上层软件就不再关心具体的硬件形态了。

5) System Call Interface,系统调用接口,向用户空间提供访问文件系统和硬件设备的统一的接口。

4.Network(网络子系统)的5个子模块及实现功能

1)Network Device Drivers,网络设备的驱动,和VFS子系统中的设备驱动是一样的。

2)Device Independent Interface,和VFS子系统中的是一样的。

3)Network Protocols,实现各种网络传输协议,例如IP, TCP, UDP等等。

4)Protocol Independent Interface,屏蔽不同的硬件设备和网络协议,以相同的格式提供接口(socket)。

5)System Call interface,系统调用接口,向用户空间提供访问网络设备的统一的接口。

注:IPC部分 管道 FIFO 消息队列 信号量 共享存储 套接字socket 还需要学习 奥里给!

 

  • 23
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值