【linux】体系结构和os管理

简介: 【linux】体系结构和os管理

冯诺依曼体系结构

输入单元:包括键盘, 鼠标,扫描仪, 写板等

中央处理器(CPU):含有运算器和控制器等

输出单元:显示器,打印机等

这里的存储器指的是内存

三者是相互连接的,设备之间会进行数据的来回拷贝,拷贝的整体速度,决定计算机效率的指标

为什么在体系结构中要存在内存?

cpu读取数据非常快,计算也非常快,而输入设备输入的速度较慢相比cpu读取速度

所以我们先要将数据加载到内存中去,在内存中积累起来,然后cpu处理内存中的大量数据,计算机效率问题就变成了内存效率问题,内存可以看做介于设备和cpu之间的一个超大缓存.

在数据层面,cpu只和内存打交道,外设和内存打交道,磁盘是外设.

设想一下,你和你的铁铁怎么聊天呢??

忽略网络上的知识,你打的字通过键盘这个输入设备加载到内存中去,然后cpu从内存中读取数据,经过处理,将数据拷贝到输出设备上(网卡),忽略网络原因,然后传到你铁铁的输入设备(网卡)上,然后将数据加载到你铁铁的内存中,经过cpu处理,将数据拷贝到你铁铁的屏幕上去了;

操作系统(Operator System)

当你打开电脑的一瞬间,操作系统就被加载了;

操作系统是一个进行软硬件资源管理的软件,设计OS的目的与硬件交互,管理所有的软硬件资源,为用户程序(应用程序)提供一个良好的执行环境

管理的例子

在学校,校长属于管理者,就好像这里的管理者,而我们学生就相当于底层的硬件,而在学校,一般校长是和我们不会见面的,驱动就相当于我们的导员,为执行者,那我们和校长不见面,校长怎么管理我们啊??

本质上只需要将你的个人信息(数据)做管理即可,对数据进行决策

我们的个人信息可以通过执行者交给管理者,管理者面对大量的信息,对我们数据的管理,就相当于对我们人的管理.

这里也可以联想到我们之前写的通讯录,需要先写个结构体保存我们的信息,然后在通过链表,或者其他的数据结构将所有人的信息组织起来,所以校长对学生的管理也就变成了对链表的增删查改

总结一下:管理就相当于先描述,再组织

操作系统工作我们可以理解为一个银行的大系统,操作系统类比行长,而底层硬件可以理解为银行所有的硬件设施,行长是不直接和硬件设备打交道,驱动程序就是我们银行的工作人员,相当于执行者,包括后勤人员,后勤人员将硬件的信息统计起来交给行长,行长对信息进行描述,组织,就相当于对硬件设施的管理,而默认银行系统是对任何人不信任的,对外提供功能,只暴露几个窗口,在操作系统内核,也只提供几个接口对外提供功能,为了更好的提供服务,银行会在外面也设置几个服务人员,而操作系统内核也会提供第三方库,和shell程序,和用户打交道.

进程

我们可以启动多个程序,将.exe加载到内存,并且操作系统会对加载到内存的程序进行管理,如何管理,就是先描述在组织;

当.exe 被我们打开,操作系统就会把该程序的进程加载到内存,进程包括程序的数据和代码(内容)+程序的属性,而针对于程序属性,操作系统会使用pcb结构体进行描述,对进程的管理,转化成对pcb对象的管理,在内存中的所有进程会通过将所以进程对应的pcb结构体节点通过复杂的双向链表连接起来,理论上pcb结点可以通过任何数据结构进行管理,PCB(进程控制块),可以理解为进程属性的集合。

在Linux中描述进程的结构体叫做task_struct。

task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

几乎所有的独立指令,就是程序,运行起来变成进程.

而task_ struct内容分类,我们后面再讲.

进程的查看

ps指令可以查看我们自己的进程信息

ps axj指令可以查看所有任务进程的信息

ps axj | head-1带数据对应的名称

ps axj | head - l &&grep '可执行程序或该进程id‘ 查看对应可执行程序的进程信息

top 也可以查看进程信息

ls /proc 将进程信息通过文件形式显示出来

ls /proc -al 查看进程发现是目录形式

只有一个云服务器无法演示显示一个正在执行的程序的进程信息

我们看不懂这些进程信息,如果出现一个exe的进程会标记当前进程对应的可执行程序的路径,还有一个cwd,当执行一个程序,cwd进程会记录该进程的工作路径

pid是你该进程的进程id

ppid是你该进程的父进程id

1.如何获取运行程序的pid

使用getpid函数,函数返回当前程序进程的pid,记得包含头文件

kill -9 +进程的pid指令,结束该进程

获取该进程的父进程id

使用getppid()函数

该进程的父进程id为2531

我们通过查看pid号为2531的是我们shell创建的子进程bash,

如果我们使用kill杀掉bash,我们的命令行就会出错

fork函数作用创建子进程的函数

fork函数的返回值,会给父进程返回子进程的pid,给子进程返回0

当我们未使用fork时

使用fork后

fork函数调用后后面的函数被执行两次,一次在子进程执行,一次在父进程执行;相当于一页纸在fork后变成了两页纸。

再来看看fork的返回值

目录
相关文章
|
3月前
|
算法
深入理解操作系统的虚拟内存管理
【7月更文挑战第24天】在现代操作系统中,虚拟内存管理是一项至关重要的技术,它允许系统拥有比物理内存更大的地址空间,从而提升多任务处理能力。本文将详细探讨虚拟内存的工作原理、关键技术及其对操作系统性能的影响,帮助读者构建对虚拟内存管理的深入理解。
|
2月前
|
Linux 调度 芯片
Linux0.11 内核体系结构(八)(下)
Linux0.11 内核体系结构(八)
51 1
|
3月前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
|
2月前
|
Linux Shell 编译器
Linux0.11 内核体系结构(八)(上)
Linux0.11 内核体系结构(八)
83 0
|
3月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
34 3
|
2月前
|
网络协议 安全 Linux
在Linux中,体系结构是什么?
在Linux中,体系结构是什么?
|
3月前
|
缓存 算法
操作系统的虚拟内存管理
【7月更文挑战第29天】本文深入探讨了操作系统中至关重要的虚拟内存管理机制,包括其设计原理、实现方式以及在现代计算机系统中的作用。通过分析分页系统、分段系统、页面置换算法和内存分配策略,揭示了虚拟内存如何优化资源利用,提高系统性能,并确保进程间的安全性与隔离性。此外,文章还讨论了虚拟内存管理面临的挑战及未来的发展方向。
|
2月前
|
存储 IDE Linux
Linux源码阅读笔记14-IO体系结构与访问设备
Linux源码阅读笔记14-IO体系结构与访问设备
|
3月前
|
弹性计算 运维 自然语言处理
阿里云OS Copilot测评:重塑Linux运维与开发体验的智能革命
阿里云OS Copilot巧妙地将大语言模型的自然语言处理能力与操作系统团队的深厚经验相结合,支持自然语言问答、辅助命令执行等功能,为Linux用户带来了前所未有的智能运维与开发体验。
下一篇
无影云桌面