常翻常新 - 侧重于 linux原理 linux内核 宏内核和微内核入门 linux核心 原理 之 进程管理等 - 断点linux 进程~

# 操作系统 0号进程 1号进程 2号进程    ~ 系统空闲进程-内存-调度

linux的0号进程和1号进程 - AlanTu - 博客园 (cnblogs.com)

Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)


* idle进程由系统自动创建, 运行在内核态

idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程。完成加载系统后,演变为进程调度、交换


* init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用户空间

由0进程创建,完成系统的初始化. 是系统中所有其它用户进程的祖先进程
Linux中的所有进程都是有init进程创建并运行的。首先Linux内核启动,然后在用户空间中启动init进程,再启动其他系统进程。在系统启动完成完成后,init将变为守护进程监视系统其他进程。


* kthreadd进程由idle通过kernel_thread创建,并始终运行在内核空间, 负责所有内核线程的调度和管理

它的任务就是管理和调度其他内核线程kernel_thread, 会循环执行一个kthread的函数,该函数的作用就是运行kthread_create_list全局链表中维护的kthread, 当我们调用kernel_thread创建的内核线程会被加入到此链表中,因此所有的内核线程都是直接或者间接的以kthreadd为父进程

我们下面就详解分析0号进程的前世(init_task)今生(idle)

 

百度搜索:linux系统原理图

 # 推荐阅读3 对比 微内核和宏内核

一文了解宏内核和微内核 - 知乎好文推荐:一文看懂linux内核详解 linux内核源码分析 - nvme设备的初始化 深度解析linux内核模块编译makefile 一文看懂Linux内核iptables 介绍Linux系统调用(值得收藏)内核是操作系统非常重要的组成部分,同时也…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/560293522?utm_id=0

# 推荐阅读1   linux 框架理解  宏内核和微内核 拆解理解

(1310条消息) linux内核整体架构_linux架构_笑看江湖路6的博客-CSDN博客

# 宏内核(linux内核基础是宏/单内核,但是后面,不断融入了微内核的精华,如模块化设计、抢占式内核,动态加载模块等)

在这里插入图片描述

 # 微内核:把操作系统分成多个独立的功能模块,每个功能模块之间的访问需要通过“消息”来完成,因此效率没有宏内核架构高:

在这里插入图片描述

# 推荐阅读2 linux 进程是核心  进程 深入理解

(1310条消息) linux内核体系结构_linux体系结构_原来是白同学呀的博客-CSDN博客Linux内核系统模块结构及相互依赖关系

由上图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起或重新运行它们的进程。通常,一个模块会在等待硬件期间被挂起,而在操作完成后才可继续运行。如: 当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可以在启动软盘旋转期间将该进程置为挂起等待状态,而在软盘进入到正常转速后再使得该进程能继续运行。另外3个模块也就是由于类似的原因而与进程调度模块存在依赖关系。
 

# 知乎进程讲解

进程、线程基础知识全家桶,30 张图一套带走 - 知乎 (zhihu.com)

#  一 理解操作系统平时都在干啥 

原文:Linux的操作系统原理详解_linux操作系统原理_大方老师嵌入式的博客-CSDN博客

1 两个工作目标

1.1  与硬件交互(把相关硬件驱动起来,给干活提供调度资源 ,内存资源,网络资源,存储资源)

1.2  为用户程序提供执行环境 (内核 有类似于K8S的 api  schduler?)

原文:Linux进程管理_Sherry-77的博客-CSDN博客_linux进程管理

# 进程管理 (深入理解 开发角度)

(1311条消息) 【Linux】Linux进程管理_滨河四季的博客-CSDN博客

冯诺依曼体系结构


我们熟悉的计算机——笔记本,不熟悉的计算机——服务器,他们都是在冯诺依曼体系结构的基础上,底层搭载不同的硬件结构,上层由操作系统管理的。冯诺依曼体系结构如下图所示:

在这里插入图片描述
输入设备:包括键盘、鼠标、磁盘、网卡、摄像头、话筒等
存储器:内存
中央处理器:包含运算器和控制器
输出设备:显示器、磁盘、网卡、音响等
在这里我们需要注意以下几点:

存储器所指的是内存,并非磁盘,硬盘等存储器件。
CPU只能与内存进行读写,不能访问输入输出设备
输入输出设备读写数据也只能与内存进行交互
总结:内存是体系结构的核心设备,CPU与外设之间的信息交互都需要依靠内存!!

操作系统
什么是操作系统呢?

操作系统就是一款专门针对软硬件资源进行管理工作的软件

为什么需要操作系统呢?

对下:与硬件交互,管理所有的软硬件资源
对上:为用户程序(应用程序)提供一个良好的执行环境

操作系统如何管理?

先描述:用struct结构体描述对象
再组织:用链表或者其他搞笑的数据结构进行组织

系统调用与库函数


系统调用是操作系统对外提供的一些接口,供上层开发使用。
库函数是存放在函数库中的函数。
那么系统调用和库函数有什么关系呢?

系统调用和库函数是上下层关系,库函数是用户对系统调用的进一步封装,库函数对硬件进行操作时,会调用系统提供的API。

进程
通俗来讲,进程就是一个正在执行的程序。在这里我们理解为进程由进程控制块PCB、数据和代码构成。当然进程不止这几部分,还有进程地址空间和页表等。

描述进程
操作系统中同时存在许多进程,每个进程各不相同,操作系统如何管理不同的进程呢?
用操作系统的六字真言“先描述,再组织”,描述进程用到进程控制块PCB,在Linux操作系统下的PCB称为:task_struct。
task_struct中存储的进程的信息,其主要可以分为以下几类:

标识符:也叫做PID,描述本进程的唯一标识符,用来区别其他进程
状态:任务状态、退出代码、退出信号等
优先级:相对于其他进程的优先级
程序计数器:PC指针,用于保存程序下一条执行指令的地址
内存指针:包括程序代码和进程相关数据的指针,通过内存指针可以找到程序文件
上下文数据:进制执行时CPU的寄存器中数据
I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表等
记账信息:包括处理器时间总和,使用的时钟数总和、时间限制、记账号等
其他信息。


上下文数据非常重要,因为在进程切换时,寄存器中的数据会被保存在PCB中,为了下次切换回来时,CPU可以找到上次进程运行的地方。通过上下文数据,我们才可以感受到进程是被切换的。

查看进程
查看进程的方法有两种:
首先我们写一个死循环的程序,让程序一直运行着,并输出该进程的PID和PPID。
————————————————

原文链接:https://blog.csdn.net/weixin_42301369/article/details/123594039

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值