[金三银四] 系统调用相关

2.36 系统调用的详细流程

Linux 在x86上的系统调用通过 int 0x80 实现,用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是:

  1. 应用程序调用库函数(API);
  2. API 将系统调用号存入寄存器(EAX),然后通过中断调用使系统进入内核态;
  3. 内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);
  4. 系统调用完成相应功能,将返回值存入寄存器(EAX),返回到中断处理函数;
  5. 中断处理函数返回到 API 中;
  6. API 将 EAX 返回给应用程序。

应用程序调用系统调用的过程是:

  1. 把系统调用的编号存入 EAX;
  2. 把函数参数存入其它通用寄存器;
  3. 触发 0x80 号中断(int 0x80)。

2.37 PCB 是什么

进程的PCB是系统感知进程的唯一实体。所以说到底,对进程进行操作,也可以理解为对PCB进行操作。
在创建进程的时候,就是分配一个PCB,里面记录了进程的各种信息,包含进程状态、程序计数器PC、CPU寄存器、内存管理信息等等,所以
PCB是要常驻内存的。

2.38 PCB的存在方式是怎样的呢

一般来说,系统把所有PCB组织在一起,并把他们放在内存的固定区域,构成PCB表。而在这个固定区域里,主要有链接和索引两种方式。
链接方式:把具有同一状态的PCB,链接成一个队列,这样可以形成若干就绪队列、阻塞队列和空白队列等,优先级高的进程的PCB排在前面。

索引方式:系统根据所有进程的状态建立几张索引表,如就绪索引表,阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中,在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。

2.39 创建进程在操作系统来看的具体步骤是怎样的

  1. 创建PCB
  2. 赋予一个唯一的进程标识符pid
  3. 为新进程分配资源,为新进程的程序和数据以及用户栈分配必要的内存空间
  4. 初始化PCB(初始化标识信息,将系统分配的标识符和父进程标识符填入新的PCB中;初始化处理机状态息,使程序计数器指向程序的入口地址,使栈指针指向栈顶;初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态。)
  5. 将新进程插入到就绪队列

image.png

2.40 进程撤销的具体过程

  1. 根据被终止的进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
  2. 若被终止的进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
  3. 若该进程还有子孙进程,还应将其子孙进程予以终止,以防他们成为不可控的进程。
  4. 将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给操作系统。
  5. 将被终止的进程PCB从所在队列或链表中移出,等待其他程序来搜集信息。

2.41 Linux 进程生命周期中的系统调用有哪些

image.png
image.png

2.42 PV 操作

PV操作主要是进程间同步的信号量机制中的申请、释放资源的操作原语,执行过程不可中断。
P操作:也称为down()/wait()操作,使S=S-1,若S<0,进程暂停执行,放入信号量的等待队列。
V操作:也称为up()/signal()操作,使S=S+1,若S<=0,唤醒等待队列中的一个进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CKA备考攻略:掌握Pod日志收集,事半功倍的秘诀!

往期精彩文章 : 提升CKA考试胜算&#xff1a;一文带你全面了解RBAC权限控制&#xff01;揭秘高效运维&#xff1a;如何用kubectl top命令实时监控K8s资源使用情况&#xff1f;CKA认证必备&#xff1a;掌握k8s网络策略的关键要点提高CKA认证成功率&#xff0c;CKA真题中的节点维…

稳定性三——wachdog机制与分析发方法

文章目录 1. 介绍2 watchdog 机制2.1 初始化2.2 添加Watchdog监测对象2.3 监测机制 3 问题分析3.1 日志分类3.2 定位3.3 场景还原 4. 实例分析5. 总结 1. 介绍 最早引入Watchdog是在单片机系统中&#xff0c;由于单片机的工作环境容易受到外界磁场的干扰&#xff0c;导致程序“…

uniapp上拉加载、下拉刷新

我这个是自定义header、main、和footer的布局&#xff0c;是盒子中的上拉加载、下拉刷新&#xff0c;不是页面的&#xff0c;废话不说&#xff0c;直接上代码&#xff01; <template><view class"assembly"><u-navbar title"个人中心" lef…

2.JavaWebMySql基础

导语&#xff1a; 一、数据库基本概念 1.什么是数据库 2.关于MySql数据库 二、MySQL的安装与卸载 安装步骤&#xff1a; 卸载步骤&#xff1a; 三、MySQL服务操作 1.服务启动和关闭&#xff1a; 2.登录和退出MySQL&#xff1a; 3.服务自启动&#xff1a; 4.命令行登…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码&#xff1a; def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值&#xff0c;返回其索引&#xff1b;否则返回 -1…

linux系统 QT 处理键盘Ctrl+C信号

linux系统 QT 处理键盘CtrlC信号 1 设置CtrlC信号处理函数 CtrlC运行 &#xff0c;serialPort不能用 .h public:explicit axisControl(axisInfo *axisinf,QWidget *parent nullptr);~axisControl();// 成员函数的CtrlC信号处理程序static void handleCtrlC(int signal);//…

【玩转Linux】有关Linux权限

目录 一.Linux权限的概念 1. 权限的本质 2.Linux中的用户 3.Linux中的权限管理 (1)文件访问者的分类 (2)文件类型和访问权限&#xff08;事物属性&#xff09; ①文件基本权限 ②文件权限值的表示方法 (3)文件访问权限的相关设置方法 ① 用 户 表 示 符 / - 权 …

EKF+PF的MATLAB例程

EKF+PF 扩展卡尔曼滤波与粒子滤波的MATLAB程序,有中文注释 程序源码 % EKF+PF效果对比 % author:Evand % 作者联系方式:evandjiang@qq.com(除前期达成一致外,咨询需付费) % date: 2024-1-10 % Ver2 clear;clc;close all; rng(0); %% 参数设置 N = 100; %粒子总数

c++之迭代器与反向迭代器

&#xff09; 正向迭代器迭代器的变量与typedef与模版operator()operator--()operator*()operator->() 反向迭代器模版与typedef与变量operator()operator--()operator*()operator->() 正向迭代器 以链表的迭代器为例 具体的代码以及可以看上一篇链表的文章:链表 迭代器的…

Vue3 快速上手从0到1,两小时学会【附源码】

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为vue3的学习笔记 项目需要使用到的依赖 npm install axios npm install nanoid vue-router npm install pinia npm install mitt 源码&#xff1a;Gitee 运行 npm install npm run dev需要运…

FastAPI静态文件映射到网页

安装了FastAPI 和 Uvicorn&#xff1a;pip install fastapi uvicorn 然后运行代码 from fastapi import FastAPI from fastapi.staticfiles import StaticFilesapp FastAPI()# 假设 dir_upload 为 "/Users/yourusername/yourprojectpath/files/" dir_upload &quo…

大唐杯学习笔记:Day10

1.1 5G网络基本架构-SA 基站 gNB可支持FDD模式,TDD模式或双模式操作&#xff1b; gNB可以通过Xn接口互联&#xff1b; gNB内部CU分为控制面和用户面分离架构&#xff1b; gNB可以由gNB-CU和一个或多个gNB-DU组成&#xff1b; gNB-CU和gNB-DU通过F1接口连接&#xff1b; …

每日OJ题_链表④_力扣23. 合并 K 个升序链表(小根堆_归并)

目录 力扣23. 合并 K 个升序链表 解析代码1&#xff08;小根堆优化&#xff09; 解析代码2&#xff08;递归_归并&#xff09; 力扣23. 合并 K 个升序链表 23. 合并 K 个升序链表 难度 困难 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并…

MacBook2024苹果免费mac电脑清理垃圾软件CleanMyMac X

CleanMyMac X是一款专业的Mac清理软件&#xff0c;具备多种强大功能。首先&#xff0c;它能够智能清理Mac磁盘上的垃圾文件和多余语言安装包&#xff0c;从而快速释放电脑内存。其次&#xff0c;CleanMyMac X可以轻松管理和升级Mac上的应用&#xff0c;同时强力卸载恶意软件并修…

windows使用pyenv

1、前言 虽然anaconda比pyenv相比有更好的python安装体验&#xff0c;但是有一个比较严重的问题的就是&#xff0c;他的python版本跨度不够大&#xff0c;一些老一些的项目的python版本找不到&#xff0c;比如py12306要求的python版本是3.6&#xff0c;在anaconda却找不到这个版…

Alibaba Cloud Linux 3.2104 LTS 64位 怎么安装python3.10.12和pip3.10

目录 Linux 安装python3.10.12 Linux 安装python3.10.12 报错解决 Linux 安装python3.10.12 问题描述&#xff1a;Alibaba Cloud Linux 3.2104 LTS 64位 安装python3.10.12和pip3.10&#xff0c;本人按照网上普通几种安装方式虽然能安装上了&#xff0c;但是它与pip版本不一…

查看pip当前关联python版本及位置

好久没用python了&#xff0c;把各种pip指向的环境忘光光啦&#xff0c;这里记录一下查看pip当前关联的python版本及位置的方法&#xff1a; pip -V结果&#xff1a; 我一般不用这个版本的python&#xff0c;去环境变量看了一下&#xff0c;原来是anaconda的Scripts自带pip&a…

gprof安装使用(CMake)说明

一、安装 1、gprof默认已安装&#xff0c;可安装相关图形处理 sudo apt-get install python graphviz sudo pip install gprof2dot 注意&#xff1a;在Debian中没有安装成功&#xff0c;报Python的版本不匹配 二、使用说明 1、使用CMake管理的工程&#xff1a; 重新配置CMa…

记录一次以WEB API方式为sonar扫描问题分配责任人的自杀式袭击

前提背景&#xff1a;获取android代码中我们修改的所有文件扫描&#xff0c;忽略基线原生未修改的文件也忽略了git&#xff0c;这导致扫描的问题没有办法分配责任人。 一开始想到了api分配的方式&#xff0c;于是动手操作了起来&#xff08;忽略了问题太多&#xff09;&#x…

Elastic Stack--05--聚合、映射mapping

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.聚合(aggregations)基本概念桶&#xff08;bucket&#xff09;度量&#xff08;metrics&#xff09; 案例 11. 接下来按price字段进行分组&#xff1a;2. 若想对所…