对操作系统(OS)管理和进程的理解

news2024/9/24 9:28:10

文章目录

  • 从冯诺依曼体系入手来了解计算机硬件部分
  • 操作系统
    • 操作系统的概念
    • 设计操作系统(OS)的目的
    • 对下(硬件)OS的管理
    • 对上如何理解系统调用
  • 进程

在计算机系统中,硬件、操作系统和进程是三个至关重要的概念。它们相互协作,共同确保计算机系统的高效、稳定运行。这篇文章将从硬件开始,逐步深入到操作系统和进程

从冯诺依曼体系入手来了解计算机硬件部分

在这里插入图片描述
我们常见的计算机,如笔记本和服务器,大部分都遵守冯诺依曼体系。

在冯诺依曼体系中计算机被分为这几个部分

  • 1.输入设备,如:键盘,鼠标,网卡,磁盘(读取)等…
  • 2.输出设备,如:显示器,音响,磁盘(写入)等…
  • 3.存储器,在这里存储器指的是内存,并不是磁盘。
  • 4.中央处理器(CPU),进行控制输入输出设备和进行运算。

在图片中我们可以看到两条路径分别是数据信号和控制信号

  • 控制信号就是CPU对各个硬件进行控制所发出的信号分别直接与输入输出设备进行信号交流
  • 数据信号不同我们可以看到CPU并不是直接与输入输出设备进行信号交流,而是将数据传到内存中CPU与内存进行数据的交流在传给内存内存再传到输出设备中

所以我们可以得到一个结论:
CPU 能且只能对内存进行读写,不能访问外设(输入或输出设备),外设要输入或者输出数据,也只能写入内存或者从内存中读取。


那么这个体系结构这样设计的原因是?

解决这个问题前我们先来进行个思想实验来体会下数据流角度在体系中的过程:
以登录 QQ 聊天为例,从打开窗口、发送消息到对方收到消息的过程中,数据的流动如下:用户通过输入设备(如键盘)输入消息,我们身为数据就诞生了,我们数据就被写入内存之中;CPU 从内存中读取我们对我们进行加密处理,然后将处理后的我们再次写入内存中;我们再被内存传输给网卡,再被网卡丢进网络,去找目标计算机;到了目标计算机之后我们又被目标计算机的输入设备(网卡)接收到,我们就被写入内存之中;CPU 从内存中读取到被加密的我们,然后将处理解码后的我们再次写入内存中;我们再通过输出设备(显示器)显示在目标屏幕上面;整体就是这个过程。
在这里插入图片描述

那么上面的问题再次精炼一点(从输入设备到内存,内存再到CPU,CPU又传输回内存,内存再到输出设备,这样会不会太麻烦?),为什么要设计内存的?

首先我们要知道就是外设(输入,输出设备)运行很慢,而CPU运行的速度很快 ,假设CPU是纳秒级别的那么外设就是毫秒级别的相比较之下差距还是很的大,那么因为木桶效应就会拉低整体的计算机速度。

如图:在存储金字塔中——CPU普遍是容量下,速度快,价格高;硬盘是容量大,速度慢,价格低。所以回到冯诺依曼系统中引入了内存,内存在二者中间,我们为了方便理解粗浅的将冯诺依曼系统看成两个部分(绿色部分和蓝色部分)
在这里插入图片描述
蓝色部分:这样CPU的速度就会由内存决定。
绿色部分:因为内存中有一定的储存空间,我们可以提前用算法将外部数据进行写入来提高速度
这样整体上提高了计算机的运行速度,我们就可以理解内存是CPU和硬盘之间的一个巨大的缓存

上面的只是其中一部分,而之所以说冯诺依曼体系是一个伟大的发明是因为大大的降低了电脑的成本,让我们可以买到性价比高的电脑,这样也推进了电脑的普及


操作系统

操作系统的概念

操作系统是计算机系统中不可或缺的一部分,它包括内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(如函数库、shell 程序等)。操作系统的设计目的是与硬件交互,管理所有的软硬件资源,为用户程序(应用程序)提供一个良好的执行环境而我们谈论的操作系统指的是内核部分

设计操作系统(OS)的目的

最本质的目的就是降低电脑的使用成本,就比方你买了一栋别墅自己一个人入住无论是从管理别墅工人还是其他都比较困难,而你找一个管家帮助你,你把事情交给管家你只负责对管家发出命令即可,那么在电脑中操作系统就是扮演管家的角色。
在这里插入图片描述
在这张图中,我们第一个标题介绍的就是底层硬件部分,而硬件到系统软件的部分每种硬件都会有自己的驱动程序(在电脑刚接电时候CPU因为有主板才可以直接访问你的磁盘的,这个是存硬件到硬件的),而操作系统并不是直接访问硬件而是通过驱动来控制硬件。

那么OS的目的就可以总结为:通过操作系统对下对硬件的管理,之其稳定高效安全的工作的这种手段来对上为用户提供一个稳定高效的运行环境

对下(硬件)OS的管理

我们下只看下面的三层,来进行说明操作系统是怎样管理的?
因为操作系统涉及的方面比较多,所以这里我们只是对操作系统进行顶层(浅层)理解
在这里插入图片描述
就以学校举例子,学校简单来说有学生,导员,校长。在学校校长是管理者(虽然学生才是(bushi[皮一下]嘿嘿),学生是被管理者,在一些大学中校长可能和学生基本上没见过几次面甚至不见面,那么校长是怎样管理我们学生的呢?带入电脑中,操作系统是校长,我们学生是硬件,那么操作系统管理硬件不一定要和硬件直接打交道,那么操作系统是如何管理硬件的呢?还有一个角色是导员,导员可以收集信息来给校长,这样校长就能有对应学生的信息了。

虽然校长拿到信息了那么是怎么管理的信息呢?校长之前是个程序员嘿嘿还是个只会C语言的程序员,所以校长就想到了设计一个对象,放学生的属性,那么就是用结构体管理学生的属性,并且用next指针连接起来

struct students* allstruct:
struct student{
char name[64];
int sex;
......
struct student *next;
......

那么校长就有了一个单链表,那么未来校长对学生管理,就变成了链表层面的增删查改的操作

回到电脑上那么操作系统是如何管理硬件的呢,硬件和学生一样也是具有属性的,那么在操作系统内部封装一个结构体,有新的硬件的时候就将属性放进去,那么就转化成了链表层面的增删查改。那么这种管理思路就是先描述,再组织任何计算机对象都遵循这种准则。**所以这也是所有主流的语言都要提供面向对象,就是提供先描述的能力,标准库就是给我们再组织的能力。**所以操作系统里面有大量数据结构。
那么先有操作系统,再有的计算机语言。


对上如何理解系统调用

在这里插入图片描述
我们以银行为例来进行理解,一个银行要有存钱,贷款,取钱的功能,在银行内部会有存取设备,座椅,服务人员,金库等。那么假设某天我要去存钱我直接把钱揣在我的兜里面,大摇大摆的走进银行直接去到了银行的金库把钱啪一放转身就走,下个人来也是这样,那如果是行长你会同意吗?所以行长就将银行对外设计成端口(窗口)的模式让你和服务人员进行沟通业务。银行也是个系统,这样即保证了银行内部的安全,对外也更加易于操作。

所以以银行为例做迁移,操作系统并不信任用户所以操作系统会将自己封闭起来,但是操作系统还要让用户使用所以开放了端口(system call这个接口只能是C语言的接口),即防止用户将底层程序改动破坏,又让用户方便的使用。所有软件的底层,都必须和C语言直接或者间接的相关。

那么某天一个老大爷来到银行老大爷老了有点懵,这时候银行会有银行经理来协助老大爷进行业务,老大爷说存钱经理就帮老大爷办好等等。
虽说有系统接口之后便于使用,但需要对系统有所了解才行,对一般的程序员使用还是会比较麻烦,所以开发系统的人就将系统端口封装成库(glibc,libc++库)来供我们使用(用户操作接口),所以说我们对于操作系统来说依然是老大爷级别的(/(ㄒoㄒ)/~~),所以现在我们使用的操作系统对应图片中用户操作接口,图形化界面(图片中没写)

进程

在这里插入图片描述
先声明图画的不是很严谨,只是易于理解
首先假设我们写了一个叫做code.c的程序里面就是一个简单的main()函数,在经过编译的时候会形成一个myexe的可执行文件,我们将电脑重启之后发现这个文件还在电脑中,那么这个可执行程序就在磁盘中。操作系统也是文件所以开机的时候先加载的是操作系统(kernel),那么当我们要执行这个文件的时候文件便会从磁盘中拷贝到内存中,在内存中形成一个myexe(外设➡内存,由操作系统+加载器完成),操作系统要对进程管理(调度到CPU…运行…关闭)那么myexe只有代码和数据,那是在内存中操作系统要找到这个代码和数据,并且再操作系统中一定不只一个进程被管理,所以操作系统通过进程的属性数据进行管理(校长拿着自己的链表进行管理进程 PCB 进程控制块),操作系统内会创建task_struck,让操作系统能找到和控制进程(校长的链表)这个过程就是操作系统的进程的模型

所以进程=内核数据结构+程序的代码和数据

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

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

相关文章

【数据库】MySQL内置函数

本篇分享一些在MySQL中常见的一些内置函数,如日期函数,字符串函数和数学函数,以方便于操作数据库中的数据。 1.日期函数 我们先整体观察一下这些函数再讲解案例 日期函数使用起来都非常就简单 获得年月日: select current_dat…

LocalMamba: Visual State Space Model with Windowed Selective Scan 论文总结

题目:LocalMamba: Visual State Space Model(视觉状态空间模型) with Windowed Selective Scan(窗口化的选择扫描) 论文:[2403.09338] LocalMamba: Visual State Space Model with Windowed Selective Scan…

opencv彩色图像转灰度图原理

opencv彩色图像转灰度图原理 在OpenCV中,将彩色图像转换为灰度图像的基本原理是使用颜色空间转换的方法。具体来说,OpenCV提供了cvtColor函数,它可以将图像从一个颜色空间转换到另一个。 对于从BGR颜色空间(OpenCV中的默认彩色图…

少儿编程Scratch中秋节动画贺卡免费下载,让孩子轻松学编程

Scratch节日动画 – 中秋节动画贺卡免费下载-小虎鲸Scratch资源站 中秋佳节将至,如何让孩子在节日中既能感受到传统文化的魅力,又能学到编程知识?小虎鲸Scratch资源站特别推出了中秋节动画贺卡,不仅能让孩子通过简单的编程技巧制作…

【AI大模型】OpenAI API实现翻译助手场景

一、OpenAI简介 OpenAI,美国人工智能研究公司,是一家开放人工智能研究和部署公司,其使命是确保通用人工智能造福全人类 。创立于2015年12月,总部位于美国旧金山。现由营利性公司OpenAI LP及非营利性母公司OpenAI Inc组成。 随着2018年埃隆马…

24年云南省下半年事业单位少有人知的10个真相

云南下半年事业单位,已经确定了9月19号报名,11月2日笔试,关于下半年事业单位联考的一些考情,一次看懂: . 1⃣️专科生的岗位很多 根据过往三年的情况来看,云南下半年的事业单位考试,其实专科生有不少的岗位…

java项目之在线考试与学习交流网页平台源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于JAVA语言…

基于Springboot的校园防疫管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1.本毕业设计(论文)课题应达到的目的: 1.1选题意义: 高校作为一种人群高度密集、人口来源地组成复杂的公共场所,一旦发生因传染病疫情导致的公共卫生安全事…

wpf触发与模板的使用示例:批量生产工具

批量生产工具 <Window x:Class"WpfM20UpdateFW.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…

java项目之基于工程教育认证的计算机课程管理平台(源码+论文)

项目简介 基于工程教育认证的计算机课程管理平台的主要管理员可以管理教师&#xff0c;可以对教师信息修改删除以及查询操作&#xff1b;可以对通知公告信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作&#xff1b;可以对学生信息进行添加&#xff0c;修改&#xf…

anaconda安装manim

anaconda安装manim &#xff08;安装时间2024年9月15日&#xff0c;后续版本变化再做更新&#xff09; 创建环境test 等一下我们创建一个manim项目作为试水 切换到test环境 {:height 430, :width 780} 输入以下代码 # using conda or mamba conda create -n my-manim-envi…

qt绘制时钟

代码 #include "widget.h" #include "ui_widget.h"#include <QWidget> #include <QPaintEvent> //绘图事件 #include <QDebug> //测试 #include <QPainter> //画家 #include <QPen> //笔 #include <QBrush> //画刷 …

java写s7和plc通讯

pom.xml <dependency><groupId>com.github.s7connector</groupId><artifactId>s7connector</artifactId><version>2.1</version></dependency>maven下载不了的&#xff0c;下载包&#xff0c;评论或者私自内免费给 DB212 类&a…

AI老照片修复神器,Anole下载介绍

最近AI老照片修复上色&#xff0c;再一次火出圈&#xff0c;一些社交平台关于此话题内容流量满满&#xff0c;尤其是在小红书和抖音火的不得了&#xff0c;本期文章就来给大家分享下AI修复老照片的方式方法 本文主要介绍使用Anole修复老照片的方法&#xff0c;只需输入一张黑白…

响应式CSS 媒体查询——WEB开发系列39

CSS媒体查询&#xff08;Media Queries&#xff09;是响应式设计中的核心技术之一&#xff0c;帮助我们在不同设备上展示不同的样式。通过媒体查询&#xff0c;开发者可以检测用户设备的特性&#xff0c;如屏幕宽度、高度、分辨率、方向等&#xff0c;针对性地调整网页布局。 一…

「数组」十大排序:精讲与分析(C++)

概述 截止目前&#xff0c;我们已经讲解并分析了十种最常见的排序算法&#xff0c;下附对应文章链接和全体Code。 链接 「数组」冒泡排序|选择排序|插入排序 / 及优化方案&#xff08;C&#xff09; 「数组」归并排序 / if语句优化|小区间插入优化&#xff08;C&#xff09…

使用Jlink给AT32下载程序

点击下载之后选择target device&#xff0c;这里我使用的是AT32F403ACGT7&#xff0c;M4内核&#xff0c;就选择Cortex-M4. 如果已经选过了&#xff0c;但不知道选没选对&#xff0c;就把ini文件删除即可再次进行选择。 我这里使用SW接线方式&#xff0c;选好后立马识别出来了…

Java【集合】

一、集合的概述 集合建立在数组基础上&#xff0c;主要位于java.util包中&#xff0c;用来存储Java类对象&#xff0c;并且可以实现各种数据结构。 集合大小可以改变&#xff0c;可以存放不同数据类型数据。集合不能存放基本类型数据&#xff0c;只能存放引用数据类型数据。集…

浅谈树型结构——树

文章目录 一、什么是树&#xff1f;二、树的特点三、树的概念四、树的表示形式五、树的应用 一、什么是树&#xff1f; 树是一种 非线性 的数据结构&#xff0c;是树型结构。是一个由n个有限结点组成的一个具有层次关系的集合&#xff0c;这种集合因为看起来像一颗倒挂的树&am…

测试-Gatling 与性能测试

Gatling 与性能测试详解 一、什么是性能测试&#xff1f; 性能测试是一种软件测试类型&#xff0c;旨在评估系统在负载下的响应时间、吞吐量和资源利用率等性能指标。通过性能测试&#xff0c;开发者和运维团队能够识别出系统的瓶颈、优化系统性能&#xff0c;并确保其在实际…