编程语言的作用及与操作系统和硬件的关系

简介: 编程语言的作用及与操作系统和硬件的关系

一、编程语言的作用及与操作系统和硬件的关系

 

   作用:编程语言是计算机语言,是一种程序员与计算机之间沟通的介质,通过编程语言可以使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。

 

   关系:编程语言会通过编译软件写成程序,程序是不能直接和硬件来进行交互的,而操作系统是用来管理计算机硬件设备的,所以我们可以就可以在操作系统上来运行程序,让操作系统去管理与配置内存、决定系统资源供需的优先次序、控制输入与输出、操作网络与管理文件系统等基本任务。

 

二、应用程序、操作系统、硬件之间的关系

 

   硬件上运行操作系统,操作系统上运行应用程序,应用程序通过 Windows API 调用操作系统函数从而和计算机硬件交互。

 

三、cpu、内存、磁盘之间的关系

 

  1.CPU 即中央处理器,CPU 从内存或缓存中取出指令,放入指令寄存器,并对指令进行解码,然后发出各种控制命令,从而完成一条指令的执行。

 

  2.CPU 并不能直接调用存储在硬盘上的系统、程序和数据,必须将硬盘的有关内容通过总线存储在内存中,才能被 CPU 读取运行。因而,内存可以理解为硬盘和 CPU 的 “中转站”。

 

  3. 当运行数据大小超出物理内存的时候,这时系统就会将硬盘上的部分空间模拟成内存 —— 虚拟内存,并将暂时不运行的程序或不使用的数据存放到这部分空间之中,等待需要的时候方便及时调用。

 

  4. 内存是带电储存,断电消失,并且容量有限,如果想长期储存的话还需要将数据存放到硬盘中。

 

四、cpu 与寄存器,内核态与用户态及如何切换

1. 寄存器是 cpu 的一部分,因为 cpu 从内存得到指令或数据的时间比 cpu 执行指令花费的时间要长,所以将关键变量和临时数据保存到寄存器里面,访问速度和 CPU 同速或半速,用来避免内存速率比 CPU 慢几个数量级的瓶颈问题,寄存器的分类:

 

    a. 通用寄存器:用来保存 cpu 运行中产生的变量和临时结果。

    b. 程序计数器:cpu 只能同时做一件事情,所以在运行过程中会在多个指令中来回切换执行,程序计数器用来存放这些指令的状态。

    c. 堆栈指针:堆栈指针的的作用是在堆栈过程中始终指向栈顶,取出指令,然后 cpu 去运行。栈就是先进后出的一种数据结构。

    d. 程序状态字寄存器:无论是系统软件还是应用软件执行后都得转换成 cpu 的指令,状态字寄存器用来控制用户态和内核态两种状态。

 

2. 当 cpu 可以访问内存里的所有数据,并且可以访问外围设备(硬盘,网卡等硬件)时为内核态,CPU 也可以将自己从一个程序切换到另一个程序;受限的访问内存,且不允许访问外围设备时为用户态,占用 CPU 的能力被剥夺,CPU 资源可以被其他程序获取。

 

3. 所有用户程序都是运行在用户态的,但是有时候程序确实需要做一些内核态的事情,例如从硬盘读取数据, 或者从键盘获取输入等。 而唯一可以做这些事情的就是操作系统, 所以此时用户程序就需要使用系统调用,操作系统请求以程序的名义来执行这些操作,此时就会从用户态切换到内核态。

 

五、L1 缓存,L2 缓存,内存(RAM),EEPROM 和闪存,CMOS 与 BIOS 电池

1. 寄存器既 L1 缓存,材质、速度和 CPU 相同,CPU 访问寄存器时无延时。

 

2.L2 缓存被称为告诉缓存,CPU 比较常用的会放在 L2 缓存中,访问速度会比 L1 缓存慢。

 

3. 所有的程序都是在内存中运行的,计算机在运行中,操作系统也会在内存中运行。内存的速度会慢于 L1 和 L2 缓存,CPU 访问的先后顺序是先访问 L1 缓存吗,然后访问 L2 缓存,再访问内存,最后访问硬盘,每次访问的命中率为 80%。

 

4.EEPROM 和闪存都是一种储存器,可以擦除和重写,但是重写的速度介于内存和磁盘之间。被应用于便携式电子设备的存储媒介,磁盘,固态硬盘等,都是应用闪存。

 

5.CMOS 也是一类存储介质,它是易失性的,断电既消失,但是因为它的耗电亮很小,所以采用它来存储一些系统的参数配置,一块电池能使用若干年。

 

六、平均寻道时间,平均延迟时间,虚拟内存与 MMU

1. 平均寻道时间它是指硬盘在接收到系统指令后,磁头从开始移动到移动至数据所在的磁道所花费时间的平均值。

 

2. 平均延迟时间机械臂到达正确的磁道之后,使得要读取的扇区转到读写头的下方这段时间的平均值,为平均延迟时间。

 

3. 当计算机运行大小大于物理内存的程序时,会在硬盘中分块一块空间,然后将内存中程序不常用的数据放到硬盘的那块空间中,当用到的时候在拿回到内存中,这时内存和虚拟的内存空间会形成映射,成为存储器管理单元(MMU)。这种方式的运行速度会比正常情况下低。

 

七、磁带

速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。

 

八、设备驱动与控制器

1. 控制器是计算机中的一个实体设备,实现 I/O 设备和计算机之间的数据交换,它是 CPU 与 I/O 设备之间的接口,它接收从 CPU 发来的命令,并去控制 I/O 设备工作,以使处理机从繁杂的设备控制事务中解脱出来。

 

2. 设备驱动是操作系统和输入输出设备间的粘合剂。驱动负责将操作系统的请求传输,转化为特定物理设备控制器能够理解的命令。

九、总线与南桥和北桥

1. 总线将计算机内部各部件连接,并且实现了计算机各功能部件之间的信息传输。

 

2. 南桥连接慢速设备,硬盘,显示器等设备。

 

3. 北桥连接高速设备,CPU,内存等设备。

 

十、操作系统的启动流程

1. 机器加电,bios 启动检查硬件设备。

 

2. bios 读取 COMS 中存储的参数,选择启动设备。

 

3. 从启动设备中读取第一个扇区的内容。

 

4. 根据分区信息读入 bootloader 启动装载模块,启动操作系统。

 

5. 操作系统文件会从 bios 中获取配置参数。会检查计算机设备的驱动程序,如果有设备缺少会提示用户缺少驱动,如果全动加载成功,则操作系统会将他们加入到内核中。

 

十一、应用程序的启动流程

1. 输入设备将指令发给控制器。

 

2. 控制器通过驱动器将请求发给操作系统。

 

3. 操作系统会去硬盘上寻找文件位置。

 

4. 操作系统找到文件以后会往内存里读,读完以后程序启动成功。

相关文章
|
5月前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
|
26天前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
40 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
2月前
|
机器学习/深度学习 Linux PyTorch
跨平台 DataLoader 实现:支持多种操作系统和硬件架构
【8月更文第29天】在深度学习项目中,数据加载和预处理是非常重要的步骤之一。一个良好的数据加载器(DataLoader)能够显著提升模型训练的速度和效率。随着深度学习应用的不断扩展,对于能够在不同操作系统和硬件架构上无缝运行的数据加载器的需求也日益增长。本文将探讨如何设计和实现一个跨平台的 DataLoader,确保其兼容性和可移植性。
37 0
|
3月前
|
Python
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
|
4月前
|
IDE Oracle Java
Java 是一种跨平台的编程语言,可以在各种操作系统上运行。
Java 是一种跨平台的编程语言,可以在各种操作系统上运行。
|
3月前
|
Linux 调度
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
部署02-我们一般接触的是Mos和Wimdows这两款操作系统,很少接触到Linux,操作系统的概述,硬件是由计算机系统中由电子和机械,光电元件所组成的,CPU,内存,硬盘,软件是用户与计算机接口之间
|
5月前
|
安全 Devops 虚拟化
【专栏】虚拟化技术与云计算平台 OpenStack:硬件虚拟化、操作系统级虚拟化和容器化
【4月更文挑战第28天】本文探讨虚拟化技术原理,如硬件虚拟化、操作系统级虚拟化和容器化,以及开源云计算平台OpenStack如何利用这些技术提供优势。OpenStack支持多种虚拟化技术,具备开源灵活性、多租户架构、可扩展性、插件式设计和成本效益。未来,OpenStack将在容器化、DevOps、跨云策略和安全合规性方面发挥更大作用,助力企业数字化转型。
565 4
|
5月前
|
运维 Linux Shell
day02-Linux运维-系统介绍与环境搭建_硬件 系统核心 解释器shell 外围操作系统
day02-Linux运维-系统介绍与环境搭建_硬件 系统核心 解释器shell 外围操作系统
|
5月前
|
存储 缓存 NoSQL
下一篇
无影云桌面