操作系统与进程简单介绍

操作系统与进程

    • 操作系统
    • 进程

操作系统

上一篇博客中介绍了操作系统到底层硬件它们之间的一个关系,那么还是这张图
在这里插入图片描述
操作系统到用户它们之间的关系又是如何的呢?
又回到了最根本的问题上:为什么要有操作系统呢?

1、向下管理好软硬件资源(手段)
2、向上提供一个良好的运行环境(目的)

因为用户不能直接访问操作系统,因为可能会对数据造成一些影响,所以就由操作系统来提供一层系统的调用接口,然后再把系统调用接口封装一层让用户通过库或者一些指令来 调用,那为什么又要封装一层呢?
我们知道printf这个函数吧,它既可以直接在windows的vs中运行又可以在linux中运行,是为什么呢?答案是:这个库函数是封装了不同系统的调用接口来实现的,所以我们并不需要说明我们在windows/linux平台就可以使用,因为它本身就封装好了对应的系统调用接口,那么这些语言的跨平台性相信大家也就能理解了。

系统调用和库函数概念

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分 由操作系统提供的接口,叫做系统调用。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统
调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

下面我们来简单谈一谈进程:

进程

我们所了解到的进程是什么呢?很多地方定义进程:加载到内存中的程序/正在运行中的程序。
其实并不正确。
事实上:我们可以启动多个程序&&操作系统要管理多个加载到内存中的程序&&操作系统管理程序的方式
从这三个问题来谈:操作系统要管理如此之多的从硬盘加载到内存中的程序,如何实现的呢?还是:先描述再组织
那么如何来描述这些进程呢?
进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。称为PCB(Process Control Block)进程控制块。在Linux中是用task_struct。
它里面包含着:

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息。

当这些程序加载到内存的时候,操作系统就会生成一个PCB对象里面包含上述对应程序的基本信息,除此之外还包含一个next指针,画一个图来看就是这样的:在这里插入图片描述
每个PCB对应它的程序,并且这些PCB通过next指针链接起来,从此之后操作系统的所有决策都是对PCB的,通过PCB里面的一系列存放的内容找到对应的程序,和程序本身无关。
所以什么是进程呢?进程=内核中PCB对象+可执行程序=内核数据结构+可执行程序事实上PCB就是一个数据结构。

OK,了解了什么是进程后我们在Linux中来查看一下进程呢,在这里插入图片描述
输入ps ajx这个指令可以看到左边的两列PPID PID分别是父进程的id和子进程的id,每一个进程都有一个id用来进行区分,每一个普通的进程一般都有父进程,这个之后再谈。

并且我们还可以通过代码看到
在这里插入图片描述
在这里插入图片描述
每一次启动这个程序,子进程id是会改变的而父进程不会改变。

——————————————————————————————————————————————————————
以上就是关于操作系统的补充以及进程的简单介绍,如有错误,欢迎指正,谢谢大家!

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

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

相关文章

敦煌文化主题页面 HTML,CSS,Javascript 源码分享

使用技术:HTML,CSS,JavaScript 项目亮点:加入了大量的CSS动画效果,以及JS交互效果,水平适合初学者以及大学生,包含登录注册页 需要的可以dd, 绿泡泡:ColdDayOne

为面试准备的一些内容

开发中使用了什么技术? mvvm、compose、livedata、单例模式、工厂模式、弱引用、线程池、Handler。 对于项目一开始我们打算使用aosp原生的管控方式,如UsageStatManager获取每个app的使用时长,和使用PackageManager的setPackagesSuspended方…

一文弄清Java的四大引用及其两大传递

开场白 Hello大家好呀,我是CodeCodeBond✊最近在复习很多很多的基础知识,有了很多新的感悟~ 话不多说,直接发车✈ 四大引用 问题切入点 在学习 Thread线程利用ThreadLocalMap实现线程的本地内存(变量副本)的时候&…

mac配置git的sshkey

在MAC中配置Git的SSH Key: 1.打开终端 2.生成SSH密钥,输入以下命令: ssh-keygen -t rsa -b 4096 -C “你自己的账号电子邮件地址” 按回车键后,系统会提示你输入文件保存路径,默认为~/.ssh/id_rsa直接按回车键使用默…

Mybatis实战:#{} 和 ${}的使用区别和数据库连接池

一.#{} 和 ${} #{} 和 ${} 在MyBatis框架中都是用于SQL语句中参数替换的标记,但它们在使用方式和处理参数值上存在一些显著的区别。 #{}的作用: #{} 是MyBatis中用于预编译SQL语句的参数占位符。它会将参数值放入一个预编译的PreparedStatement中&am…

Java语言程序设计——篇十一(2)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

MySQL(8.0)数据库安装和初始化以及管理

1.MySQL下载安装和初始化 1.下载安装包 下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2.解压…

数据同步策略概览

数据同步在业务开发中比较普遍,例如 订阅MySQL的binlog将数据同步至异构数据库。数据同步方案需要考虑一下几点: 数据实时性要求数据量级是否有数据转换逻辑 可分为两种模式 发布订阅模式:分为订阅数据库log还是订阅应用层发的消息点对点模…

问界M7是不是换壳东风ix7? 这下有答案了

文 | AUTO芯 作者 | 谦行 终于真相大白了 黑子们出来挨打啊 问界M7是换壳的东风ix7? 你们没想到,余大嘴会亲自出来正面回应吧 瞧瞧黑子当时乐的 问界你可以啊!靠改名字造车呢? 还有更过分的,说M7是东风小康ix7…

【网络】网络入门(第一篇)

网络入门可以从多个方面开始,以下是一个基本的网络入门指南,涵盖了网络的基本概念、网络类型、网络协议、网络拓扑、网络设备以及网络地址等方面。 一、网络基本概念 计算机网络:将多个计算机系统和设备连接在一起,以实现资源共…

CANoe系统变量模块里定义的结构体类型和变量从CAPL代码角度理解

CAPL里声明一个结构体类型: variables {struct DoIPMessage{byte version;byte inVersion;word type;dword length;byte payload[1500];};struct DoIPMessage doipMessage; }声明一个结构体类型DoIPMessage,定义了一个此结构体…

【数据结构】哈希表(散列表)

目录 1、unordered系列关联式容器 2、哈希概念 3、哈希函数 3.1 直接定址法 3.2 除留余数法 4、哈希冲突 4.1 闭散列(开放定址法) 4.1.1 线性探测 4.1.2 二次探测 4.1.3 线性探测代码实现 插入 搜索 删除 对于不可以取模的类型 4.2 开散列(哈希桶/拉链法) 插入…

【pyhton】Python中zip用法详细解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

在WordPress上启用reCAPTCHA的指南

随着网络安全问题的日益严重,网站管理员必须采取措施保护自己的网站免受恶意攻击。对于WordPress用户来说,可以通过启用谷歌的reCAPTCHA功能来增强网站的安全性。本文将介绍两种在WordPress上启用reCAPTCHA的方法:使用插件和手动添加代码。 一…

白盒测试基础与实践:Python示例及流程图设计

文章目录 前言一、白盒测试是什么?主要特点常用方法优点缺点 二、白盒测试常用技术语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖 三、程序流程图设计四、测试用例设计1. 基本路径法2. 语句覆盖3. 判断覆盖4. 条件覆盖5. 判断/条件覆盖6. 条件组合覆盖…

两个好消息,你先听哪个?

1.第五大数据、人工智能与软件工程国际研讨会(ICBASE 2024)成功申请IEEE出版,上线IEEE官网,欢迎投稿参会!!! 📣IEEE独立出版,设置优秀评选 🔥院士加盟,中外高…

一个私有化的中文笔记工具个人知识库,极空间Docker部署中文版『Trilium Notes』

一个私有化的中文笔记工具&个人知识库,极空间Docker部署中文版『Trilium Notes』 哈喽小伙伴们好,我是Stark-C~ 最近被很多小伙伴问到NAS上的笔记工具,虽说之前也出过Memos,刚开始用起来还不错,但是用了一段时间…

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求:按勾选的顺序给后端传值 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-…

文件解析漏洞—IIS解析漏洞—IIS7.X

在IIS7.0和IIS7.5版本下也存在解析漏洞,在默认Fast-CGI开启状况下,在一个文件路径/xx.jpg后面加上/xx.php会将 “/xx.jpg/xx.php” 解析为 php 文件 利用条件 php.ini里的cgi.fix_pathinfo1 开启IIS7在Fast-CGI运行模式下 在 phpstudy2018 根目录创建…

红酒与夜晚:享受静谧的品酒时光

当夜幕低垂,星光点点,世界仿佛进入了一个宁静而神秘的领域。在这样的夜晚,与一瓶定制红酒洒派红酒(Bold & Generous)相伴,便是一场令人陶醉的品酒之旅,让人在静谧中感受生活的美好。 一、夜…