Linux:理解进程,系统调用,进程,进程切换,调度,分时操作系统和实时操作系统,

操作系统要向上提供对应的服务
操作系统,不相信任何用户或者人;------------银行------窗口
因此提供了系统调用,(函数调用)-->用户和操作系统之间进行某种数据交互
一:系统调用
计算机的各种硬件资源是有限的,为了更好的管理这些资源,用户进程是不允许直接操作的,所有对这些资源的访问都必须由操作系统控制。为此操作系统为用户态运行的进程与硬件设备之间进行交互提供了一组接口,这组接口就是所谓的系统调用。
系统调用实质上就是函数调用,只不过调用的是系统函数,处于内核态而已。 用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行,最后返回。
二:进程
课本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统调用资源(cpu时间,内存)的实体。
进程=PCB(task_struct)+自己的代码和数据

进程控制块(PCB)详解
进程控制块(process ctrl block)是操作系统为了管理进程设置的一个专门的结构体 task_struct。
操作系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来控制和管理进程。
那么进程控制块(即 task_struct结构体)都包含了哪些信息?

man getpid(进程ID)------>2号手册,系统调用
普及:man手册 3号手册,库调用
man man

man getpid

三、进程切换
(1).死循环进程是如何运行
a.一旦一个进程占有CPU,会把自己的代码跑完吗?---不会
时间片的东西
所以,什么是时间片呢?
时间片:是操作系统调度任务的基本单位,指一个任务在CPU上连续执行的时间段。通过将CPU时间划分为多个小片段,操作系统可以在多个任务之间快速切换,实现多任务并发执行。
### 主要特点
1. **固定长度**:每个时间片的长度通常固定,由操作系统决定。
2. **轮流执行**:任务按顺序获得时间片,依次执行。
3. **抢占式调度**:任务在时间片用完后会被暂停,切换到下一个任务。
### 优点
1. **公平性**:所有任务都能获得CPU时间。
2. **响应性**:快速切换任务,提升系统响应速度。
3. **多任务支持**:允许多个任务看似同时运行。
### 缺点
1. **上下文切换开销**:频繁切换任务会增加系统开销。
2. **任务延迟**:长任务可能需要等待多个时间片才能完成。
### 示例
假设时间片为10ms,系统中有三个任务A、B、C:
- 任务A运行10ms后暂停,切换到任务B。
- 任务B运行10ms后暂停,切换到任务C。
- 任务C运行10ms后暂停,重新切换到任务A。
通过这种方式,系统实现了多任务的并发执行。
死循环进程,不会打死系统,不会一直占有CPU!
(2)聊聊cpu,寄存器
a.cpu中会有很多的寄存器--即寄存器就是CPU内部的临时空间,保存着进程的代码和数据
b.寄存器!=寄存器里面的数据,寄存器的内容是变化的,多份的

(3)如何切换
a.故事:
b.具体:进程切换的本质是:保存和恢复当前进程的硬件上下文的数据,即cpu内寄存器的内容
所以:当前进程要把自己的进程硬件上下文数据保存起来,那么保存哪里去了?
答案:保存到进程的task_struct里面!!TSS:任务状态段
四:调度
Linux真实的调度:O(1)调度算法
调度器:
调度器是操作系统中的一个关键组件,负责管理和分配CPU资源给系统中的任务(如进程或线程)。它的核心目标是决定哪个任务在何时使用CPU,以实现高效、公平的系统运行。
### 调度器的主要功能
1. **任务选择**:
- 从就绪队列中选择下一个要运行的任务。
- 根据调度算法(如先来先服务、轮转调度、优先级调度等)做出决策。
2. **资源分配**:
- 分配CPU时间片给选中的任务。
- 确保所有任务都能公平或按优先级获得CPU资源。
3. **上下文切换**:
- 在任务切换时保存当前任务的运行状态(如寄存器、程序计数器等)。
- 恢复下一个任务的运行状态。
4. **响应性和效率**:
- 确保系统对用户输入或外部事件能够快速响应。
- 最大化CPU利用率,减少空闲时间。
---
### 调度器的类型
1. **长期调度器(作业调度器)**:
- 决定哪些任务可以进入就绪队列。
- 控制系统的并发任务数量。
2. **中期调度器**:
- 负责将任务从内存中换出(挂起)或换入(恢复)。
- 主要用于内存管理。
3. **短期调度器(CPU调度器)**:
- 决定哪个任务获得CPU时间。
- 是最常用的调度器,负责频繁的任务切换。
### 常见的调度算法
1. **先来先服务(FCFS)**:
- 按任务到达的顺序分配CPU。
- 简单但可能导致“饥饿”现象。
2. **短作业优先(SJF)**:
- 优先运行预计执行时间最短的任务。
- 可以减少平均等待时间,但可能导致长任务等待过久。
3. **轮转调度(RR)**:
- 每个任务分配一个固定长度的时间片,轮流执行。
- 公平且响应性好,适合交互式系统。
4. **优先级调度**:
- 根据任务的优先级分配CPU。
- 可能导致低优先级任务“饥饿”。
5. **多级反馈队列(MLFQ)**:
- 结合多种调度算法,动态调整任务的优先级和时间片。
- 兼顾响应性和公平性。
---
### 调度器的工作流程
1. 任务进入就绪队列。
2. 调度器根据算法选择下一个任务。
3. 调度器执行上下文切换,将CPU分配给选中的任务。
4. 任务运行,直到时间片用完、阻塞或完成。
5. 调度器重复上述过程,选择下一个任务。
### 调度器的重要性
- 提高CPU利用率,减少资源浪费。
- 确保系统公平性和响应性。
- 支持多任务并发执行,提升用户体验。
简单来说,调度器就像是操作系统的“交通警察”,指挥任务有序运行,确保系统高效、稳定地工作。

活跃进程:
五:分时操作系统和实时操作系统
分时操作系统(Time-Sharing OS)和实时操作系统(Real-Time OS)是两种不同的操作系统类型,设计目标和应用场景有显著区别。以下是它们的主要差异:
汽车实时操作系统:比如刹车

相关文章:
Linux:理解进程,系统调用,进程,进程切换,调度,分时操作系统和实时操作系统,
操作系统要向上提供对应的服务 操作系统,不相信任何用户或者人;------------银行------窗口 因此提供了系统调用,(函数调用)-->用户和操作系统之间进行某种数据交互 一:系统调用 计算机的各种硬件资…...
深入理解Vue中的Component:构建灵活且可复用的前端模块
在前端开发的世界里,随着应用程序的规模和复杂度不断增加,如何有效地组织和管理代码成为了一个关键问题。Vue.js作为一款流行的前端框架,通过其强大的组件系统为开发者提供了一种优雅且高效的解决方案。本文将深入探讨Vue中的Component(组件),包括其基本概念、创建方式、…...
【javaEE】多线程(基础)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
vscode - 操作整理
文章目录 vscode - 操作整理概述笔记打开文件后,编码另存为配置指定后缀的文件的语言模式语言模式配置 - Batch 安装eol插件配置文件如果用vscode打开的文件没有显示回车,原因及处理vscode启用了信任模式,需要信任工作区才行。 将打开的文件中…...
linux 基本命令教程,巡查脚本,kali镜像
linux实操 shutdown练习 Shutdown -h 5 意思是五个小时之后进行重启 新用户密码设置, Useradd 用户名 新建用户 Passwd 进行设置密码 覆盖关机时间 Shutdown -c 取消重启设置 top练习 查看进程 僵尸进程 kill:查看jobs号直接杀死 kill %num 查看…...
R语言使用scitable包交互效应深度挖掘一个陌生数据库
很多新手刚才是总是觉得自己没什么可以写的,自己不知道选什么题材进行分析,使用scitable包后这个完全不用担心,选题多到你只会担心你写不完,写得不够快。 今天演示一下使用scitable包深度挖掘一个陌生数据库 先导入R包和数据 li…...
Kali WebDAV 客户端工具——Cadaver 与 Davtest
1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...
QSplashScreen启动画面开发详解
QSplashScreen启动画面 1. 基本概念2. 使用场景3. 基本操作与代码示例3.1 创建简单的启动画面3.2 动态更新启动画面信息4. 自定义启动画面样式4.1 自定义文字和背景5. 高级应用:结合多线程加载6. 注意事项7. 总结其他QT文章推荐QSplashScreen 是 Qt 框架中用于在应用程序启动时…...
线性代数笔记28--奇异值分解(SVD)
1. 奇异值分解 假设矩阵 A A A有 m m m行 n n n列 奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。 A v → u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}\overrightarrow{u…...
【记录一下学习】Embedding 与向量数据库
一、向量数据库 向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。 在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,…...
面试准备——云相册项目(1)基础
项目概述 云相册项目旨在为用户提供便捷的照片存储、管理和访问服务。通过客户端与服务器的配合,实现照片的上传、下载以及一些基本的命令交互功能,方便用户在不同设备上随时查看和管理自己的相册。 技术要点 编程语言与环境:使用 C 语言开…...
Redis数据结构深度解析:从String到Stream的奇幻之旅(一)
Redis系列文章 《半小时掌握Redis核心操作:从零开始的实战指南》-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(一)-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(二&…...
Linux - 网络基础(应用层,传输层)
一、应用层 1)发送接收流程 1. 发送文件 write 函数发送数据到 TCP 套接字时,内容不一定会立即通过网络发送出去。这是因为网络通信涉及多个层次的缓冲和处理,TCP 是一个面向连接的协议,它需要进行一定的排队、确认和重传等处理…...
【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚前言 📖 IP地址的组成 🔖IPv4 🔖IPv6 📚…...
解锁前端表单数据的秘密旅程:从后端到用户选择!✨
😄 解锁前端表单数据的秘密旅程:从后端到用户选择!✨ 嘿,技术爱好者们!👋 你有没有在开发中遇到过这样的困惑:表单里的数据(比如图片附件、识别点 ID)从哪儿来的&#x…...
Kotlin字符串操作在Android开发中的应用示例
Kotlin字符串操作在Android开发中的应用示例 引言 在Android开发中,Kotlin已经成为主流的编程语言,它提供了许多便捷的字符串操作功能。本文将结合一个具体的Kotlin示例程序,详细介绍Kotlin中字符串的创建、格式化和使用方法。 示例代码 以…...
【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】
机械视觉与 C# VisionPro 联合编程详解 目录 机械视觉与 C# VisionPro 联合编程详解 概念 应用场景 1. 工业检测与质量控制缺陷检测 2. 定位与机器人引导 3. 识别与分类 4. 复杂流程控制 将visionPro工具加载到winform 环境准备 一、创建winform项目 二、打开窗体…...
迷你世界脚本自定义UI接口:Customui
自定义UI接口:Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:(除前两个,其余的目前只能在UI编辑器内部的脚本使用) 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面(注意…...
江科大51单片机笔记【9】DS1302时钟可调时钟(下)
在写代码前,记得把上一节的跳线帽给插回去,不然LCD无法显示 一.DS1302时钟 1.编写DS1302.c文件 (1)重新对端口定义名字 sbit DS1302_SCLKP3^6; sbit DS1302_IOP3^4; sbit DS1302_CEP3^5;(2)初始化 因为…...
发行思考:全球热销榜的频繁变动
几点杂感: 1、单机游戏销量与在线人数的衰退是剧烈的,有明显的周期性,而在线游戏则稳定很多。 如去年的某明星游戏,最高200多万在线,如今在线人数是48名,3万多。 而近期热门的是MH,在线人数8…...
微信小程序接入deepseek
先上效果 话不多说,直接上代码(本人用的hbuilder Xuniapp) <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…...
为解决局域网IP、DNS切换的Windows BAT脚本
一、背景 为解决公司普通人员需要切换IP、DNS的情况,于是搞了个windows下的bat脚本,可以对有线网络、无线网络进行切换设置。 脚本内容 echo off title 多网络接口IP切换工具:menu cls echo echo 请选择要配置的网络接口: echo echo 1. 有线网络&am…...
VUE3开发-9、axios前后端跨域问题解决方案
VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客...
【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
计算机网络的性能指标 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了计算机网络的三个性能指标——速率、带宽和吞吐量。用大白话来说就是:网速、最高网速和实时网速。 相信大家看到这三个词应该就…...
Kubermetes 部署mysql pod
步骤 1: 创建 PersistentVolume 和 PersistentVolumeClaim 首先为 MySQL 创建一个 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来确保数据的持久性。 mysql-pv.yaml: apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volume spec:cap…...
Docker和DockerCompose基础教程及安装教程
Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…...
网络安全等级保护—定级
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 网络安全等级保护五个保护等级 五个保护等级 受侵害的客体 对客体的侵害程度 一般损害 严重损害 特别严重损害 公民、法人和其他组织的合法权益 第一级 第二级 …...
服务器数据恢复—raid5阵列中硬盘出现坏道的数据恢复流程
服务器故障情况: 某公司一台服务器中有一组多块硬盘组成的磁盘阵列。磁盘阵列中有2块硬盘出现故障离线,服务器崩溃,上层数据丢失。 硬件检测: 硬件工程师对客户服务器内的所有硬盘进行物理故障检测,最终确认这2块硬盘…...
macos 程序 运行
sudo xattr -r -d com.apple.quarantine [/Applications/Name]使用stow 管理配置文件...
UVC for USBCamera in Android
基于UVC 协议,完成USBCamera 开发 文章目录 一、目的:二、USBCamera 技术实现方案难点 三、误区:四、基础补充、资源参考架构图了解Camera相关专栏零散知识了解部分相机源码参考,学习API使用,梳理流程,偏应…...
