【Linux】冯诺依曼体系结构、操作系统概念、进程概念

简介: 【Linux】冯诺依曼体系结构、操作系统概念、进程概念

前言

本文介绍了冯诺依曼体系结构、操作系统及进程概念。


一、冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

1.简介冯诺依曼体系

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

  • 输入单元:键盘,网卡, 鼠标,扫描仪, 写板等;
  • 输出单元:磁盘,网卡,显示器,打印机等;
  • 中央处理器(CPU):含有运算器和控制器等;

关于冯诺依曼体系要注意的是:

  • 这里的存储器指的是内存;
  • 不考虑缓存的情况,这里的CPU只能对内存进行读写,不能访问外设(输入或者输出设备);
  • 所有的设备都只能直接和内存打交道。

2.CPU

在整个计算机中CPU是运行速度最快的,其次是CPU中配置的寄存器,之后是内存,外设是最慢的。(CPU的运行是通过电流的交互,而外设等都是机械运动,所以速度差距是很大的)

CPU虽然是速度最快的,但是它只能被动接受别人的数据,CPU只有通过识别别人的指令(制造CPU时内置的指令集)才能执行别人的指令。

3.存储器

存储器指的是内存。

如果没有内存,CPU只能从外设获取数据,但是外设的速度是相对较慢的,这就意味着此时整个程序的运行速度取决于外设,这会导致程序的运行效率较慢。

木桶效应

一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。

内存的存在,解决了这个问题,可以先包数据存放在内存中,再加载到CPU中进行处理,这就提高了数据的处理速度。

所以CPU中的数据必须从内存中拿!!!

3.IO(输入输出)

我们所说的IO(即,input/output,输入输出)就是从内存的角度上看:把数据从输入设备存入内存的过程就是input,把数据从内存放置到输出设备的过程就是output。这就是IO的过程。

4.总结

程序的数据必须加载到内存,CPU执行的代码访问的数据必须从内存中读取。(冯诺依曼体系决定的)

二、操作系统(OS)

1.操作系统是什么?

操作系统是一个进行软硬件资源管理的软件,操作系统包含进程管理、文件管理、内存管理以及驱动管理。

2.为什么有操作系统?(功能)

操作系统:对下进行合理的管理软硬件资源(目的),对上为用户提供稳定的、高效的、安全的的执行环境(手段)。

3.操作系统如何实现功能?

管理的本质是对数据做管理。操作系统并不是直接对计算机中的各种软硬件进行管理,而是通过提取出要管理的事物的数据,对数据进行分析,最终做出决策,下发指令给驱动,由驱动进行执行,达到管理的目的。

操作系统管理软件是先用struct结构体将它描述起来,再用链表等数据结构将它组织起来。

  1. 例子:学校校长对学生的管理
    校长并不直接接触学生,而是通过辅导员将学生的数据(姓名、性别、年龄、成绩等等)传给校长,再对数据进行分析,对每一个学生的管理方案进行决策,将指令传给辅导员,由辅导员执行对学生的管理。
  2. 总结
    管理的本质是对数据做管理,管理的方法是先描述再组织。
    计算机的体系结构:

三、系统调用和库函数

  1. 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  2. 系统调用在使用上,功能比较基础,对用户的要求相对比较高,所以,有一些开发者对部分的系统调用做了适当的封装,从而形成了库。有了库,就更有利于上层用户或者开发者进行二次开发。
  3. 用户不是直接和操作系统进行操作交流的,需要通过调用用各种接口间进行交流(对应计算机体系结构图中的用户操作接口和system call)。

四、进程

1.概念

  1. 大多数课本中的概念:一个运行起来的(加载到内存中的)程序叫做进程,即在内存中的程序叫做进程
  2. 内核的观点:进程是担任分配系统资源(CPU运行时间、内存等)的实体

2.描述进程的数据结构——PCB

1.PCB

进程的信息被统一放在一个叫进程控制块的结构体中,可以将它理解为进程属性的集合。PCB(process control block),linux操作系统下的PCB是task_struck结构体。

2.程序和进程

程序本质是放在磁盘上的可执行文件(.exe文件)。

进程则是将程序加载到内存中(根据冯诺依曼结构体系,程序要允许需要先加载到内存中)并且由操作系统进行管理,生成一个描述自身性质(属性)的数据结构(PCB)。

因此,进程是由内核数据结构(PCB)和进程在磁盘上的对应代码共同组成的。

3.task_struct

Linux中描述进程属性的数据结构PCB叫做task_struct(task_struck是PCB的一种),它被装载在RAM(内存)中。

task_struct内容分类:

  1. 标识符:描述进程的唯一标识符,用于区分不同的进程;
  2. 状态:任务状态、退出码、退出信号等;
  3. 优先级:相对其他进程的优先级;
  4. 程序计数器:记录程序中即将被执行的下一条指令的地址(不是下一条指令)
  5. 内存指针:包括程序代码和进程相关数据的指针以及与其他进程共享的内存块的指针;
  6. 上下文数据:进程执行时处理器的寄存器中的数据;
    用一个例子说明:
    张三同学因为生病需要休学一年,那么在他正式学修前需要准备申请休学的材料,同时要带走他在学校放置的物品。
    休学回来后,他将申请恢复,同时将自己带走的物品重新放回学校。
    这些被张三带走又带回的物品就是他的上下文数据。
  7. I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表;
  8. 记账信息:包括处理器的时间总和,使用的时钟数总和、时间限制、记账号等。

所有运行在操作系统中的进程都以task_struct链表的形式存在内核中。

3.查看进程

1.方法1

  1. 创建文件myproc.c和Makefile



  2. 查看进程
    先复制一个ssh会话,再用ps ajx | head -1 && ps ajx | grep myproc | grep -v grep命令显示该可执行文件中的进程信息。

    我们可以用ctrl + c终止进程,也可以用kill - 9 (进程pid)杀掉进程

    进程运行的本质是读取并执行程序内部的代码,从启动到终止这个进程的过程会有很长一段时间,在整个过程中它都具有动态属性。即,进程在调度运行的时候就具有动态属性。

2.方法2

修改myproc.c文件

使用命令:ls /proc/(进程pid) -d查看进程

如图:通过进程pid来查看进程,当进程被杀死就无法再进行查看了。

如图,进程也可以被当作一个文件看待。

当然,重新执行进程时操作系统会为进程分配一个新的pid。

4.系统调用

1.getpid

获取进程的pid。该函数的返回值就是进程的pid。

2.系统调用获取进程标示符

getpid();//获取本进程的标示符
getppid();//获取本进程父进程的标示符


总结

以上就是今天要讲的内容,本文介绍了冯诺依曼体系结构、操作系统以及进程的相关概念。本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。

最后,如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
存储 Linux iOS开发
【Linux】冯诺依曼体系与操作系统理解
本文深入浅出地讲解了计算机体系的两大核心概念:冯诺依曼体系结构与操作系统。冯诺依曼体系作为现代计算机的基础架构,通过中央处理器、存储器和输入输出设备协同工作,解决了硬件性能瓶颈问题。操作系统则是连接硬件与用户的桥梁,管理软硬件资源,提供运行环境。文章还详细解析了操作系统的分类、意义及管理方式,并重点阐述了系统调用的作用,为学习Linux系统编程打下坚实基础。适合希望深入了解计算机原理和技术内幕的读者。
520 1
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
616 32
|
缓存 运维 前端开发
阿里云操作系统控制台:高效解决性能瓶颈与抖动之进程热点追踪
遇到“进程性能瓶颈导致业务异常”等多项业务痛点时,提供高效解决方案,并展示案例。
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
4351 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
1798 5
|
编解码 自然语言处理 JavaScript
智谱发布GLM-OS概念及Agent产品,CogAgent-9B模型开源助力GUI交互场景
11月29日,智谱正式提出 GLM-OS 概念,并发布 AutoGLM 和 GLM-PC 两款 Agent 产品。近期GLM-PC 的基座模型—— CogAgent-9B 开源,供社区进一步开发。
1419 8
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。

热门文章

最新文章