• Linux内核浅谈


           最近发现自己的底层的理论知识太薄了,所以默默的准备恶补了一顿操作系统的知识,所以就选了一本Linux内核的书学习学习。大学里学的专业课是操作系统,跟纯讲Linux系统还是有少许的不一样的吧。但是有想通的地方时可以通过Linux系统的学习来加深对操作系统的了解,比如说从Linux的开机加电自检的过程可以类似的知道windows系统或者是OS系统的开机启动流程。

          下面开始总结总结我在学习Linux内核中的过程中的小小总结,纯粹的皮毛,入个门而已。首先Linux的内核我分为了1.开机加电到系统到怠速阶段的过程 2.文件系统,3.用户进程,和内存管理4.缓冲区 5.进程间通信。好 ,首先第一个Linux的启动过程,启动固化在硬件上的BIOS的启动代码,再次加载第一部分boolsect引导程序代码,加载第二部分内核代码,最后加载第三部分System模块代码,从开始的16位实模式转化为32位的保护模式,最后就开始和一个普通的C语言程序一样,开始执行main函数。

          main函数进行完之后,系统开始进行根设备的挂载,内存,缓冲区等划分,还有各种GDT,LDT的建立,这些操作都是进程0的工作,也就是最高权限的进程。所有进程的创建都是从复制父进程开始的,每个进程都有一个task_strcut的结构体掌握。进程2的创建主要是加载shell程序,创建update进程,update进程的作用是定期将缓冲区中的数据同步到外设上,最后系统实现怠速。

        Linux中的文件操作主要涉及3个数组。filp[20]与file_table[64],i_node[32],文件句柄要与file_table[64]对应,file_table又要与i_node[32]对应,i_node代表其中的文件,也就是一个系统中最多同时打开不同的32个文件,最多打开64个文件,包括相同的,一个进程可以想象一个应用程序最多打开20个文件,包括相同文件.在文件操作之前其实还有一步很重要的操作,就是将外设中的超级快,也就是硬盘挂载到根文件系统中,这相当于是一个前提条件,至于如何修改文件,读文件,写文件,都是与缓冲区之间的交互。

        至于内存管理和进程间通信,将会在后续更新。Linux菜鸟的浅谈而已


  • 相关阅读:
    [译]async/await中使用阻塞式代码导致死锁
    C# 对象与JSON字符串互相转换的三种方式
    C# form 传参数的几个方法
    C# 跨线程调用控件的4中方法
    Task的取消
    Task总结
    一个开发10年程序员论:学习Python最正确的步骤
    阿里大神总结的Python基础知识实例,超详细
    十条Python面试题陷阱,看看你是否会中招
    Python程序员编程10大原则,请牢牢记住,避免吃亏
  • 原文地址:https://www.cnblogs.com/bianqi/p/12184334.html
Copyright © 2020-2023  润新知