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

2024-03-11 01:28
文章标签 系统 调用 相关 金三银

本文主要是介绍[金三银四] 系统调用相关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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.chinasem.cn/article/796161

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo