操作系统与进程简单介绍

news2024/11/13 15:08:24

操作系统与进程

    • 操作系统
    • 进程

操作系统

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

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.coloradmin.cn/o/1972682.html

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

相关文章

jQuery入门(五)Ajax和json

一、Ajax 简介 AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 本身不是一种新技术,而是多个技术综合。用于快速创建动态网页的技术。 一般的网页如果需要更新内容,必需重新加载个页面。 而 AJAX 通过浏览器与服务器进行…

一篇文章读懂抖音短视频矩阵系统:核心功能与优势分析

抖音短视频矩阵系统作为当下备受欢迎的内容创作与分发平台,已经吸引了大量用户和创作者的关注。本文将详细介绍抖音短视频矩阵系统的核心功能与优势,帮助您全面了解这一强大的内容创作工具。 1. 抖音短视频矩阵系统 抖音短视频矩阵系统是一个集创作、编…

【Hot100】LeetCode—287. 寻找重复数

目录 题目1- 思路2- 实现⭐287. 寻找重复数——题解思路 3- ACM 实现 题目 原题连接:287. 寻找重复数 1- 思路 快慢指针 2- 实现 ⭐287. 寻找重复数——题解思路 class Solution {public int findDuplicate(int[] nums) {int slow nums[0];int fast nums[0];//…

DB-Engines Ranking 2024年8月数据库排行

DB-Engines Ranking 2024年8月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2024年8月,共有423个数据库进入排行。 排行榜 前15名趋势图 关系型数据库前 10 名 键值数据库前 10 名 文档数据库前 10 名 时序数据库前 10 …

从0到1:构建高性能的视频美颜SDK和直播美颜插件

本篇文章,笔者将探讨如何从0到1,构建一个高性能的视频美颜SDK和直播美颜插件,助力开发者打造出色的产品。 1.需求分析与技术选型 通常情况下,视频美颜功能需要包括基础的滤镜效果、磨皮美白、面部特征优化等。这些功能既要保证实…

C++入门级文章

一、一个用于查询C标准库内函数、操作符等的链接 https://legacy.cplusplus.com/reference/ 声明:该文档并非官方文档,但其具有易于查询和使用的优势,足够日常使用。 二、C的第一个程序 1、C语言中的语法在C中仍旧适用,首先我们来…

书生大模型学习笔记 - Python

Python实现wordcount 请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。 解题思路:首先把字母转小写>然后把单词取出来去除标点>循环单词列表>key已存…

老板让你点评网页UI,你却不知道如何说起……

当评价网页UI设计时,可以参考以下几个标准: 1. 一致性(Consistency): 一个优秀的网页UI应该保持一致性,即在整个网页中使用相同的设计元素和样式,如颜色、字体、按钮样式等。这样可以增加用户…

2024年【北京市安全员-B证】新版试题及北京市安全员-B证模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-B证新版试题考前必练!安全生产模拟考试一点通每个月更新北京市安全员-B证模拟试题题目及答案!多做几遍,其实通过北京市安全员-B证作业考试题库很简单。 1、【多选题】…

Html实现全国省市区三级联动

目录 前言 1.全国省市区的Json数据 2.找到Json数据文件(在此博文绑定资源)之后,放到resource目录下。 3.通过类加载器加载资源文件,读取Json文件 3.1 创建JsonLoader类 3.2 注入JsonLoader实体,解析Json文件 4.构建前端Html页面 5.通过…

至尊雄心:成为不甘平庸的男人,掌握顶级赢家思维

至尊雄心:成为不甘平庸的男人,掌握顶级赢家思维 嘿,伙计们!如果你是个有抱负的男人,或者你想要成为一个有成就的男人,那么这篇文章就是为你量身定做的。这里,我们将一起探讨那些顶级赢家的思维…

开源蓝牙协议栈-Zephyr Bluetooth

关于Zephyr的介绍,参考: https://blog.csdn.net/2201_75889983/article/details/129366754 Zephyr最初是由Wind River公司开发的一个微内核,在2016年的时候成为Linux基金会维护的一个项目,发展至今,已经成为了一个功能…

国内访问github出现无法访问,用Watt Toolkit加速

文章目录 前置1. 访问github出现“无法访问...”2. 安装Watt Toolkit点击下载接受并下载下载渠道 Watt Toolkit 就绪侧栏“网络加速”下拉滚动条勾选github,点右上“一键加速”再次访问 github.com ,可以访问 前置 准备好微软账号 1. 访问github出现“无法访问…”…

vulnhub靶机:Tomato

目录 靶机导入 信息收集 发现 IP 目录扫描 端口扫描 访问 web 漏洞利用 方法1:报错连接拿 shell 方法2: 使用python3进行反弹shell 提权 靶机导入 tomato 下载地址:Tomato: 1 ~ VulnHub 信息收集 发现 IP arp-scan -l 发现靶机 IP…

【Qt】QMainWindow之菜单栏

目录 一.菜单栏 1.概念 2.组成 二.代码创建菜单栏 1.创建菜单栏 2.在菜单栏中添加菜单 3.在菜单中添加菜单项 三.图形化创建菜单栏 1.在打开Qt自带的ui文件界面后,得到以下界面 2.双击点击界面中(在这里输入),在菜单栏中进行…

【开端】JAVA日志框架LogFactory

熟悉的一行代码 private static final Log logger LogFactory.getLog(Application.class); 这一行代码就是使用了LogFactory日志框架,对类Application,进行日志输出。 private static final 这里表示虚拟机启动后就创建一个最终的日志对象Log logger 创…

MySQL学习(18):触发器

1.什么是触发器 *触发器是在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。 *日志记录,数据校验等操作使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容。OLD引用的是触发器变化前的内容,NEW引用的是触发…

鸿蒙Flex布局

效果: 代码: 换行代码参数设置: wrap:FlexWrap.Wrap Entry Component struct FlexCase {State message: string Hello World;build() {Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround,alignItems:ItemAlign.Cen…

QT和Electron之争,谁才是王者,看看界面判断下

QT 和 Electron 都是用于开发跨平台应用程序的框架,但很难简单地判定谁是“王者”,因为它们各有优劣,适用于不同的场景和需求。 QT 是一个成熟的 C 框架,具有以下优点: 性能出色:由于是基于 C 开发&#…

Eureka详解:解锁微服务架构中的服务发现与注册超能力!

Eureka是一款由Netflix开源的服务发现框架,主要用于微服务架构中的服务注册与发现。在使用Eureka时,涉及到配置Eureka Server、配置Eureka Client、服务注册与发现等步骤。 Eureka服务端配置: 引入依赖:在项目的pom.xml文件中添加…