2024-09-13 冯诺依曼体系结构 OS管理 进程

一、冯·诺依曼体系结构

1. 外部设备(外设):

分为输入设备和输出设备

输入设备:键盘、网卡、鼠标、网卡、磁盘(外存)、摄像头等

输出设备:显示器、磁盘、网卡、打印机等

2. 存储器

内存

3. 中央处理器(CPU)

运算器 + 控制器

CPU在数据层面,不会和外设直接互动,而只和内存进行交互

场景:(scanf / printf)→ 二进制文件 → 文件 → 磁盘 → 外设

任何程序在执行之前,都需要从磁盘上被加载到内存中,以便CPU能够访问并执行其指令

当数据在计算机间流转时,本质上是在不同的设备间进行拷贝

→ 设备的拷贝效率本质就是计算机的效率

二、操作系统(OS)

1. 一种进行 软硬件资源 管理 的 软件

内核(kernel):进程/任务/线程管理,文件系统,内存管理,驱动管理

其他程序:shell,glibc,原生库,预装软件

2. 设计OS的目的

注:每一种硬件都要有自己对应的驱动程序

手段:操作系统有效地管理底层软硬件资源,确保其稳定运行、高效利用及安全性,以此为手段保障系统正常工作

目的:操作系统为上层用户提供了一个稳定、高效且安全的运行环境,以满足用户的需求和使用体验

3. OS管理

任何计算机对象的管理思路都遵循【先描述,再组织】的原则

【Q】为什么现在所有主流的面向对象的编程语言,都要提供:1)面向对象 2)标准库?

【A】面向对象对应"先描述 ",标准库对应"再组织"

【Q】程序能直接向硬件写入吗?

【A】不能,必须要通过操作系统

操作系统在设计上遵循最小权限原则,默认不信任任何用户进程,因此其核心功能被严格封装和保护,以维护系统的稳定性和安全性。

为了使上层应用程序能够利用操作系统的服务,操作系统必须暴露一系列精心设计的接口 ,这些接口即系统调用接口。这些接口是操作系统与用户空间应用程序之间的唯一正式交互通道,且这些接口通常以C语言的形式提供,以确保跨平台和跨编程语言的兼容性以及高效的性能。

所有软件的底层,都必须和C语言直接或间接相关!

系统调用接口是操作系统提供的一种机制,它允许上层应用程序与操作系统内核进行交互。对于一般程序员而言,直接使用系统调用接口进行开发确实存在一定难度,因为这要求开发者具备较为深厚的操作系统知识,以及对底层硬件和系统资源的深入理解。

图形化用户界面(GUI)则通常与特定的图形库或框架相关联,它为程序员提供了一套更为直观的开发工具集,使得应用程序的交互设计更加简便。

三、进程

进程管理 ------ 先描述,再组织

PCB(Process Control Block):转化成对某种数据结构的管理

内核观点:担当分配系统资源(CPU时间、内存)的实体

操作系统通过进程的属性数据来管理

cpp 复制代码
struct task_struct{
    int pid;
    int status;
    int prio;
    void* memptr;
    上下文;
    struct task_struct* next;
}

进程 = 内核数据结构(Linux下的PCB是task_struct)+ 程序的代码和数据

运行起来的程序 → 根据 task_struct 属性,进程会被OS调度器调度,运行

【Q】为什么要有PCB?

【A】因为需要先把对象描述起来,再才能组织管理

相关推荐
我爱学习好爱好爱几秒前
Ansible Playbook介绍 playbook的编写要求 playbook多任务案例
linux·运维·ansible
我爱学习好爱好爱1 分钟前
Ansible 常用模块详解:firewalld、setup实战
linux·运维·ansible
jinanwuhuaguo3 分钟前
Claude Code 深度学习与场景应用完全指南:从入门到精通的全景实战
开发语言·人工智能·深度学习
Ricky_Theseus5 分钟前
C++全局变量、局部变量、静态全局变量、静态局部变量的区别
开发语言·c++
小此方6 分钟前
Re:从零开始的 C++ STL篇(十)map/set使用精讲:常见问题与典型用法(上)
开发语言·数据结构·c++·算法·stl
88号技师8 分钟前
2025年11月一区SCI-壁虎优化算法Gekko Japonicus Algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
今儿敲了吗12 分钟前
Linux学习笔记第三章——基础命令(一)
linux·笔记·学习
奇树谦14 分钟前
Ubuntu 24 常用截图工具一键安装脚本+自定义快捷键配置指南
linux·运维·ubuntu
浅念-16 分钟前
LeetCode 双指针题型 C++ 解题整理
开发语言·数据结构·c++·笔记·算法·leetcode·职场和发展
风向决定发型丶17 分钟前
Java 线程池 vs Go GMP
java·开发语言·golang