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】因为需要先把对象描述起来,再才能组织管理

相关推荐
前路不黑暗@6 分钟前
Java项目:Java脚手架项目的通用组件的封装(六)
java·开发语言·spring
马士兵教育21 分钟前
程序员简历如何编写才能凸显出差异化,才能拿到更多面试机会?
开发语言·后端·面试·职场和发展·架构
Ronin30523 分钟前
【Linux网络】Socket编程:UDP网络编程实现ChatServer
linux·网络·udp
面向对象World1 小时前
正点原子Mini Linux 4.3寸800x480触摸屏gt115x驱动
linux·服务器·数据库
jz_ddk1 小时前
[指南] Python循环语句完全指南
开发语言·python·continue·循环·for·while·break
chilavert3181 小时前
技术演进中的开发沉思-368:锁机制(中)
java·开发语言·jvm
17(无规则自律)1 小时前
LubanCat 2烧录一个新镜像后开发环境搭建
linux·嵌入式硬件·考研·软件工程
大黄说说1 小时前
MySQL数据库运维管理基础知识:从安装到日常维护的完整指南
开发语言
HAPPY酷2 小时前
C++ 多线程实战三板斧
java·开发语言·c++·技术美术
独自破碎E2 小时前
BISHI54货物堆放
android·java·开发语言