操作系统的设计与实现(笔记2)-进程管理系统调用

汇编语言复习(三)课堂实验回顾 1、汇编语言的源代码格式 data segment ;定义数据段 x dw 0123h,0456h y dw 0789h,0abch z dw 0defh,0fedh w dw 0cbah,0987h data ends stack segment stack ;定义堆栈段 dw 0,0,... 阅读详情

 

fork()

fork是创建进程的唯一途径。它实际上是做一个调用它的进程的精确拷贝,包括文件描述符,寄存器值等所有内容。 调用fork后,原进程和所得的拷贝各自执行,互不相关。在执行fork时,二者所有的对应变量都有相同的值,但由于子进程在创建过程中对父进程的数据作了一个拷贝,所以在此之后,其中任一进程中变量值的改变不会对另一个进程产生任何影响(正文段不可修改,它由父、子进程共享)。 正确情况下fork的返回值对子进程为0,对父进程为一个正整数,即子进程的标识号pid。通过该返回值可以将父子进程区分开来。

 

waitpid(pid, &statloc, opts)   //等待一个子进程结束

该系统调用使调用进程阻塞直到子进程中的任一个结束(若将其第一个参数置为-1),也可以等待一指定的子进程结束。waitpid结束时,子进程的终止状态值(正常结束或异常结束,以及正常结束时的返回值)被放在第二个参数指向的地址单元。

 

execve(name, argv, envp)  //替换一个进程的核心映像
一般情况下,exec有三个参数:待执行的文件名,指向参数数组的指针和指向环境变量数组的指针。

 

一个高度简化的shell框架

while (TRUE) { /* 无限循环 */
    read_command(command, parameters); /* 从终端读取输入 */
    if ( fork() != 0 ) { /* 创建子进程 */
        /* Parent code */
        waitpid( -1, &status, 0); /* 等待子进程退出 */
    } else {
        /* Child code */
        execve(command, parameters, 0); /* 执行命令 */
    }
}

exit(status)  //终止进程的执行并返回状态
EXIT系统调用的作用是结束一个进程,它只有一个参数指定其出口值(0~255)。这个值通过wait和waitpid系统调用中的变量status,返回给父进程。status的低字节存放结束状态,0为正常结束,其他值均表示出错。status的高字节包含子进程的出口值(0~255)。例如若父进程执行:n = waitpid( -1, &status, options);则父进程被阻塞直至有一个子进程结束。如果子进程结束时将4作为exit的参数值,则父进程唤醒时n被置为该结束子进程的pid,而status的值为0x0400。

brk(addr) //设置数据段大小


MINIX中进程的存储空间分为三部分:正文段(text segment,即程序代码),数据段(data segment,即变量)和堆栈段(stack segment) 。数据段是向上增长而堆栈向下增长,如图1-11所示。在两者之间是空闲区。堆栈的增长随程序的执行自动进行,而数据段的扩展则通过BRK系统调用显式地完成,BRK有一个参数指定数据段的结束地址,它可以比当前值大(数据段扩展),或比当前值小(数据段缩小)。该参数必须小于堆栈指针,否则堆栈和数据段将重叠,这是不允许的。

出于为程序员的方便考虑,系统提供了一个库函数sbrk来改变数据段大小,它的参数是数据段的变化量(负数表示数据段缩小)。其原理是跟踪数据段的当前值,(该值由BRK返回)。计算其新的大小,然后申请所需的空间。BRK和sbrk均与实现密切相关,所以不是POSIX的组成部分。
 

pid = getpid()  //返回调用进程的标识号
pid = getpgrp() //返回调用进程的组号

pid = setsid() //创建一个新的会话并返回其组标识
另一个简单的系统调用getpid返回调用进程的进程标识号,注意在调用fork时,只有父进程能够获得子进程的进程标识号。如果子进程要得到自己的进程标识号,它必须使用getpid。同样地,getgrp返回进程的组标识号。SETSID系统调用启动一个新的会话(session),并将进程组的pid设为调用者的pid。


I = ptrace(req, pid, addr, data) //用于调试

它被调试器用来对被调试程序进行控制,通过ptrace,调试器可以读写被控进程的地址空间并实施其他控制。







 

进程管理系统的设计与实现 SDUT 操作系统实训 项目 Java 进程管理系统的设计与实现 要求: (1)设计一个完整的进程调度系统,至少包含三种常用的算法(FCFS、SPF、静态优先权、响应比、时间片轮转),系统中至少包含5个进程,并且能够体现进程的动态申请; (2)定义PCB; (3)结果要能够显示出进程的调度序列及进入系统的时间、运行时间、完成时间、周转时间、带权周转时间、优先权等必要信息; (4〉设计的输入数据要能体现算法的思想 本人使用Java语言编写,编写过程中在网络中查找大量资料。 本人是本篇代码的唯一作者。 本代码仅限参考学习,禁止抄. 阅读详情

相关推荐

【系统架构设计师】二、操作系统知识(操作系统概述|进程管理)

操作系统有三个重要的作用: 第一:管理计算机中运行的程序和分配各种软硬件资源; 第二:为用户提供友善的人机界面; 第三:为应用程序的开发和运行提供一个高效率的平台。 操作系统的4个特征是并发性、共享性、虚拟性和不确定性。

帅次的博客 3225

操作系统_进程管理系统设计_课程设计报告

1.需求分析 1.1设计系统目的: 本设计的目的是加深对进程概念及进程管理各部分内容的理解,熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构实施。 1.2设计系统要求: 设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进程控制、同步与通讯机构,其进程调度算法可任意选择。每个进程用一个PCB表示,其内容根据具体情况设置。各进程之间有一定的同步关系可选。系统在运行过程中应能显示或打印各进程的状态及有关参数的变化情况,以便观察诸进程的运行过程及系统的管理过

LE1076287422的博客 4974

操作系统进程管理大作业实战指南

操作系统是计算机系统的核心软件,它负责管理硬件资源,提供用户与计算机之间的交互界面,并协调各软件之间的运行。操作系统的设计目标包括资源管理、任务调度、内存管理、文件系统等。操作系统是一个控制和管理系统硬件与软件资源的程序,它为应用程序和用户提供操作界面,是用户和计算机硬件之间的接口。在本章节中,我们首先介绍了如何使用C++调用Windows API中的函数来创建新的进程实例,并管理进程句柄与优先级。

weixin_36019375的博客 760

操作系统课程设计-进程管理

1.题目要求描述 本设计的目的是加深对进程概念及进程管理各部分内容的理解;熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构的实施。要求设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进程控制,其进程调度算法可任意选择。每个进程用一个PCB表示,其内容根据具体情况设置。具体要求如下: ⑴设计一个模拟进程调度的系统; (2)采用FCFS先来先服务调度算法,SPF短进程优先调度算法,HPF优先级调度算法,RR时间片轮转调度算法,HRRN高响应比优先调度算法 ⑶自己根据算法需要

qq_50686295的博客 5713

中移物联ML307C模组OPENCPU笔记2

本文介绍了如何编译和运行一个DEMO程序,以官方SDK为例。

weixin_43700831的博客 1886

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 254

汇编语言(四)-8086的指令系统

1. 数据传送指令 2. 算术指令 3. 逻辑指令 4. 串操作指令 5. 转移指令 6. 处理机控制指令

qq_43681073的博客 5307

Codesys软运动控制进阶:用SMC_FreeEncoder为ECAT轴搭建一个“虚拟手轮”调试工具

本文详细介绍了如何利用Codesys的SMC_FreeEncoder功能为ECAT轴搭建虚拟手轮调试工具,解决自动化设备开发中的硬件依赖问题。通过软件模拟手轮脉冲信号,实现无硬件依赖的运动控制逻辑验证,显著提升调试效率。适用于汇川AM400等PLC平台,特别适合机械安装滞后或伺服驱动器故障时的调试场景。

weixin_33737774的博客 480

二、操作系统进程管理(1)——进程及其实现

1.进程的定义: 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。 2.进程的组成: 进程(进程实体)由程序段、数据段、PCB三部分组成。 进程控制块(PCB):是系统为每个运行的程序配置的数据结构,用来描述进程的各种信息(如程序代码存放位置)。 操作系统通过PCB来管理进程,因此PCB应包含操作系统对其进行管理所需要的各种信息。 3.进程的组织方式: 在一个系统中,通常有数千个PCB。为了有效管理,应把这些PCB...

Zzh1110的博客 759

2026年9月20日 2026年CSP-S初赛真题整理

这是本次考试最难的部分,涉及Gray Code(格雷码)+ 状态压缩 + 数学推导难点解决方案关键代码问题转化将得分差转化为m−2xim - 2x[i]m−2xi高效枚举Gray Code相邻状态O(1)转移奇偶判断利用奇偶性统一条件。

weixin_51184047的博客 629

【ROS机器人系统】实验4 ROS简单应用:激光SLAM与导航

ROS简单应用:激光SLAM与导航 (1)了解机器人和SLAM之间关系 (2)了解激光SLAM (3)了解gmapping和导航

南京大学软件工程硕士在读 2146

操作系统之进程创建与撤销的C语言实现

进程创建与撤销实验目的实现总体设计代码实现 实验目的 模拟进程的创建、就绪、撤销,并按优先级对进程排序。 实现 总体设计 数据结构定义 结构体PCB: 进程名、ID、运行时间、优先级等,队列的排序按优先级排序。 PCB空间: 结构体PCB数组 队列: 就绪队列,消息缓冲队列 函数 Create()—进程创建: 从PCB空间申请一个空PCB,填入进程参数,插入就绪队列; kill()—进程终止: 将指定的就绪进程移出就绪队列,清楚PCB信息; display()-就绪队列输出: 输出就绪队列中的进程信息,以

David_house的博客 9314

基于PUMA实现DOA估计-附Matlab代码

具体而言,PUMA算法将接收的信号分别在时域和频域上进行处理,并结合平稳合成(SS)和平稳子空间(SSP)方法,以提高估计精度。该算法将传统的基于协方差矩阵的最大似然(ML)和最小二乘(LS)方法扩展到了非均匀线性阵列(ULA)上,并通过对信号分离和DOA估计的优化,达到了高精度和高分辨率的效果。方位角(DOA)估计是信号处理中的一个重要问题,它的目的是确定从多个传感器接收到的信号的方向。本文将介绍如何使用基于PUMA的方位角估计算法来实现DOA估计,并附有相应的Matlab代码实现。

Byte_O_O的博客 496

【操作系统】探究进程奥秘:显示进程列表的解密与实战

《【操作系统】探究进程奥秘:显示进程列表的解密与实战》深入探讨了操作系统中显示进程列表的研究。首先,文章详细介绍了获取和展示进程列表的基础概念,包括系统调用和API的运用,以及命令行工具的实际操作。其次,深入剖析了进程调度和优先级的机制,强调了这一过程对系统性能和响应时间的直接影响。最后,文章聚焦于进程间通信和同步机制,阐述了共享内存、消息传递和信号等关键概念的应用。

朝花夕拾 1万+

Arduino开发实例-EMG 肌肉信号传感器

在医学研究中,测量肌肉的活动、收缩和扩张非常重要。 EMG 肌肉传感器测量肌肉活动并产生信号以显示扩张和收缩量。 因此,输出取决于所选肌肉的活动量。 3 绿色、红色和黄色电极连接到模块,用于传输来自肌肉运动的电信号。

视觉与物联智能 1699

Graphviz安装及使用:决策树可视化

Python大数据分析与机器学习学习笔记 Graphviz安装及使用:决策树可视化

算法工程师 1万+

操作系统:模拟进程调度管理系统

目录 1 基本信息... 2 2 实验内容与目的... 2 2.1 实验内容:2 2.2 实验目的... 2 3 主要设计思路和流程图... 3 3.1 算法流程图... 3 3.2 系统设计架构... 4 3.3 主要UI设计... 5 4 主要数据结构及其说明... 6 4.1 PCB. 6 4.2 ProQueueBase. 7

oldfar的博客 3786

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

《操作系统精髓与设计原理》学习笔记

文章目录置顶第一章:计算机系统概述1. 基本构成2. 指令分类3. 中断中断的分类多个中断4. 内存层次板上存储器板外存储器离线存储器5. 高速缓存6. 多处理器和多核多处理器多核二者区别第二章:操作系统概述1. Linux主要内核组件2. Windows和Android先不整理,以后需要再学第三章:进程1. 进程介绍进程的两个基本元素进程控制块(PCB)2. 进程状态经典5状态挂起态3. 操作系...

LvPartner的博客 3710

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

操作系统课程设计

操作系统课程设计汇总 来源:网络收集 这次海轰选择是题目二,感觉有点难,得费一点时间 其他的题目以后有时间可以尝试一下 再不写C++,就快凉了 题目一:支持多个进程(线程)并发运行的简单进程(线程)管理模拟系统 1.实验内容         学习进程管理的设计与实现,学习和运用操作系统原理,设计一个操作系统子系统的模拟系统。通过该系统的设计调试可增加对操作系统实现的感知性。设计一个允许n个进程并发运行的进程管理的模拟系统。该.

海到无边天作岸 山登绝顶我为峰 1万+

操作系统(详细笔记——上)

计算机操作系统(王道考研课程知识点总结)会不定时持续更新!

qq_64681137的博客 2134

操作系统(2)——进程&线程

对操作系统中的进程和线程进行了一个初步的讲解和分析,希望对大家有所帮助

AI+全栈,AI+应用,实操落地,前沿技术 1043

操作系统课程设计——文件管理系统(C语言版)

一、目的 通过模拟磁盘,完成操作系统的文件管理功能,掌握包括目录结构的管理、外存空间的分配与释放以及空闲空间管理三部分。为写入模拟磁盘的数据文件建立目录,目录可以是单级文件目录、双级文件目录、树形结构目录。在目录中选择某个文件可以将其数据读入模拟内存。 二、设计内容 1、通过初始化操作建立一个模拟磁盘,在模拟磁盘中保存目录和文件内容。创建该模拟磁盘时可创建初始的根目录内容、文件分配表。 2、文件目录项(可以采用FCB格式)应包括文件名、类型(目录 or文件)、创建日期、大小、第一个磁

m0_71233415的博客 5652

操作系统课程设计(linux操作系统)

操作系统课程设计 本操作系统课程设计主要在linux虚拟机上操作,请下载虚拟机相关软件!实验一 Windows 进程管理实验二 Linux进程管理实验三 Linux进程间通信实验四 Windows 的互斥与同步实验五 内存管理实验六 银行家算法的模拟与实现实验七 磁盘调度算法的模拟与实现实验八 虚拟内存页面置换算法的模拟与实现实验九 基于信号量机制的并发程序设计实验十一 简单二级文件系统的设计 本操作系统课程设计主要在linux虚拟机上操作,请下载虚拟机相关软件! 更多课程设计源码请进主页查看搜索:

陈陈不like的博客 1万+

操作系统进程实验课程设计

题目:操作系统——进程实验 姓名:郑兆涵                         学校:烟台大学                      专业:计算机科学与技术(嵌入式方向) 班级:计146-2                        学号:201458506230              目录: 一、设计

Henry's Blog 3万+

操作系统考研笔记

系统调用是由操作系统提供给用户的,它只能通过用户程序间接使用制约性,间断性,共享性属于多道程序设计的基本特征,顺序性不是单处理机系统中,进程与进程不可并行处理计算机开机后,操作系统最终被加载到RAM中可寻址是块设备(如U盘,硬盘)的基本特征。分配共享设备是不会引起进程死锁的。共享设备必须是可寻址和可随机访问的设备。为了便于上层软件的编制,设备控制器通常需要提供控制寄存器,状态寄存器和控制命令。在设备控制器(IO控制器)中用于实现设备控制功能的是IO逻辑。在操作系统中通道技术。...

拧发条鸟的博客 7558

操作系统复习

操作系统复习

KQ的博客 1万+
上一篇: 操作系统的设计与实现(笔记1)
下一篇: 操作系统的设计与实现(笔记3)——进程介绍
wiscourper_
博客等级 码龄17年 1641粉丝 272原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值