当前位置: 首页 > article >正文

Linux-进程概念

本节学习重点:

• 认识冯诺依曼系统
• 操作系统概念与定位
• 深⼊理解进程概念,了解PCB
• 学习进程状态,学会创建进程,掌握僵⼫进程和孤⼉进程,及其形成原因和危害
• 了解进程调度,Linux进程优先级,理解进程竞争性与独⽴性,理解并⾏与并发
• 理解进程切换,以及Linux2.6 kernel,O(1)调度算法架构
• 理解环境变量,熟悉常⻅环境变量及相关指令, getenv/setenv函数
• 理解C内存空间分配规律,了解进程内存映像和应⽤程序区别, 认识虚拟地址空间。

1.冯诺依曼体系结构

我们常⻅的计算机,如笔记本。我们不常⻅的计算机,如服务器,⼤部分都遵守冯诺依曼体系。

关于冯诺依曼,必须强调⼏点:
• 这⾥的存储器指的是内存
• 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
• 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。
• ⼀句话,所有设备都只能直接和内存打交道。

对冯诺依曼的理解,不能停留在概念上,要深⼊到对软件数据流理解上。

2.操作系统(Operator System)

2.1概念

2.2设计OS的目的

2.3核心功能

• 在整个计算机软硬件架构中,操作系统的定位是:⼀款纯正的“搞管理”的软件

2.4理解“管理”

计算机管理硬件
1. 描述起来,⽤struct结构体
2. 组织起来,⽤链表或其他⾼效的数据结构

2.5系统调用和库函数的概念

3.进程

3.1进程概念和基本操作

• 课本概念:程序的⼀个执⾏实例,正在执⾏的程序等
• 内核观点:担当分配系统资源(CPU时间,内存)的实体。

3.1.1描述进程-PCB

3.1.2task_struct

3.1.3查看进程

3.1.4通过系统调用获取进程标识符

3.1.5通过系统调用创建进程-fork初识

3.2进程状态

3.2.1linux内核源代码

3.2.2进程状态查看

3.2.3 Z(zombie)-僵尸进程

Ptrace 详解 - tangr206 - 博客园

3.2.4僵尸进程的危害

3.2.5孤儿进程

3.3进程优先级

3.3.1基本概念

3.3.2查看系统进程

3.3.3 PRI 和 NI

3.3.4 PRI vs NI

3.3.5查看进程优先级的命令

3.3.6 竞争 独立 并行 并发

3.4进程切换

3.4.1Linux2.6内核进程O(1)调度队列

一个CPU拥有一个runqueue,如果有多个CPU就要考虑进程个数的负载均衡问题。

3.4.2优先级

• 普通优先级:100〜139(我们都是普通的优先级,想想nice值的取值范围,可与之对应!)
• 实时优先级:0〜99(不关⼼)

3.4.3活动队列

3.4.4过期队列

3.4.5active指针和expired指针

总结:

在系统当中查找⼀个最合适调度的进程的时间复杂度是⼀个常数,不随着进程增多⽽导致时间成
本增加,我们称之为进程调度O(1)算法!

4环境变量

4.1基本概念

4.2常见环境变量

• PATH : 指定命令的搜索路径
• HOME : 指定⽤⼾的主⼯作⽬录(即⽤⼾登陆到Linux系统中时,默认的⽬录)
• SHELL : 当前Shell,它的值通常是/bin/bash。

4.3查看环境变量的方法

4.4相关命令

1. echo: 显⽰某个环境变量值
2. export: 设置⼀个新的环境变量
3. env: 显⽰所有环境变量
4. unset: 清除环境变量
5. set: 显⽰本地定义的shell变量和环境变量

4.5环境变量的组织方式

4.6通过代码获取环境变量

4.7通过系统调用获取环境变量

4.8 环境变量通常是具有全局属性的

5.程序地址空间

5.1研究平台

• kernel 2.6.32
• 32位平台

5.2 程序地址空间回顾

5.3虚拟地址

5.4进程地址空间

5.5虚拟内存管理 - 第⼀讲

5.6 为什么要有虚拟地址空间

原文地址:https://blog.csdn.net/2401_83575662/article/details/146233701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/588430.html

相关文章:

  • 麒麟服务器操作系统Sqlite部署手册
  • 笔记:代码随想录算法训练营day48:739. 每日温度\496.下一个更大元素 I\503.下一个更大元素II
  • 【专项测试】限流测试
  • Java算法OJ(12)
  • Vue 3 组件库主题化与可扩展性深度剖析:设计模式与实现策略 - 构建灵活适应多场景的组件库架构
  • Java缓存String(字符串常量池)、Integer (-128 到 127 )
  • 计算机基础:二进制基础12,十进制数转换为十六进制
  • 联想台式电脑启动项没有U盘
  • 【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力
  • 编程题《牛牛的链表删除》的python可以用非链表的方式
  • 某省政务信创案例:3阶段实施×5类工具链选型经验分享
  • Word 小黑第18套
  • 用DasViewer的时候3Dtiles 转osgb 可以直接指定目标坐标系吗?
  • 【c++】【智能指针】什么情况下不适合智能指针
  • C++之stack_queue扩展
  • 【VUE】day04-组件的生命周期、组件之间的数据共享、ref引用、购物车案例
  • Axure高级功能深度解析一一高效原型设计的利器
  • 怎样用Java实现快速排序与找到数组中第k小的值?
  • AI第一天 自我理解笔记--微调大模型
  • L1-093 猜帽子游戏