linux学习第一天(2017-03-07)1.1-1.3.12

开始学习书《深入linux内核架构

Wolfgang Mauerer著   郭旭  译

今后有看到需要记录的和需要和大家共同讨论、共享的东西,我都会在此记录下来,希望以此督促自己!

GNU = GNU is not unix;

研究内核2.6.24。目前内核4.5-rc6。内核充当底层驱动程序,并对系统中的各个设备和组件进行寻址。内核是应用程序锁知道的层次结构中的最底层。

linux是整体式的宏内核,即内核中每个函数都可以访问内核中的所有其他部分,减少了复杂通信所需要额外的CPU时间。

unix下,每个进程都在CPU的虚拟内存中分配地址空间。进程之间相互独立,不会意识到彼此的存在。linux为多任务系统,系统中同时真正在运行的进程数目最多不超过CPU数目。内核借助于CPU,负责进程切换的技术细节。撤销进程的CPU资源之前保存进程所有与状态相关的要素,并将进程置于空闲状态;重新激活程序时,则将保存的状态原样恢复。内核还确定如何在现存进程之间共享CPU时间。重要的进程得到的CPU时间多一点,次要的少一点,确定哪个进程运行多长时间的过程称为调度

linux下,每个进程都依赖于一个父进程。内核启动init程序作为第一个进程,是进程树的根。

unxi操作系统中有两种创建新进程的机制,分别是forkexec

fork可以创建当前进程的一个副本,父进程和子进程只有PID不同。写时复制(copy on write)让fork操作更高效,例如用户打开另一个浏览器窗口。

exec将一个新程序加载到当前进程的内存中并执行。

重量级进程(UNIX进程),轻量级进程(线程)。一个进程本质上可能由若干个线程组成,这些线程共享同样的数据和资源。

linux将虚拟地址空间划分为两个部分,分别称为内核空间和用户空间。32位系统,最大地址空间为4GiB。

特权级别,linux只使用两种不同的状态,核心态用户状态。从用户状态到核心态的切换通过熊调用的特定转换手段完成。

物理内存页经常称为页帧,页则专指虚拟地址空间中的。用来将虚拟地址空间映射到物理地址空间的数据结构称为页表。linux采用四级页表。

;页表结构    PGD(全局页目录)->PMD(中间页目录)->PTE(页表数组)->offset(偏移量)。每个地址都指向地址空间中唯一定义的某个字节。

MMU,内存管理单元。TLB,地址转换后备缓冲器。地址转换中出现最频繁的那些地址,保存在TLB的CPU高速缓存中。

        伙伴系统,我参考了博客http://blog.csdn.net/vanbreaker/article/details/7605367,理解了一部分,解释了内存的分配机制。

slab缓存,kmalloc,kfree,这些函数可以访问slab缓存。

页面交换通过利用磁盘空间作为扩展内存,从而增大了可用的内存。;在内核需要更多内存时,经常使用的页可以写入硬盘。如果在需要访问相关数据,内核会将相应的页切换回内存。缺页异常机制,这种切换操作对应用程序时透明的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值