目录
一、现代计算机体系结构
1.硬件的组成部分
①中央处理单元CPU:由运算器、控制器(控制协调各部分工作)、寄存器组成
CPU指令,指令集:
特权指令:操作系统才有权限运行特权指令;
普通指令:
高级语言->obj->汇编语言->机器语言
CPU架构类型:
x86, x64, ARM
早些时候流行过的CPU架构
m68000, m68k
power(IBM,第一个多核CPU),powerpc(简装版的power)
ultrasparc ( SUM ), alpha, 安腾
②总线bus:实现各部件之间的数据交换
③编址存储设备memory:32位可寻址4G内存
快慢:单位时间内电平可以变化的次数
问题:缓存(read ahead预读)为什么可以加速CPU工作呢?
程序运行时具有空间和时间局部性
④输入输出设备IO:与外界交互
最常见的IO设备:磁盘、网卡
2.软件的组成部分
①操作系统:
应用程序程序员接口API:
语言库:C、C++、Java等
系统调用接口(至内核读入口点)
内核:
文件管理
进程间通信
进程管理
CPU调度程序
主存与辅助存储器管理
设备驱动程序:鼠标、键盘、打印机等驱动程序
②应用程序用户接口AUI:
应用程序:编译器、字处理软件、电子表格软件、网页浏览器
Shell
二、操作系统相关概念
软件程序
屏蔽了底层硬件细节,消除底层差异,提供通用操作接口给程序员,简化了程序员的工作
通用目的
硬件驱动
进程管理
内存管理
网络管理
安全管理
P.S. 普通程序要运行特权指令,让操作系统代理完成,操作系统接收请求(系统调用),底层硬件功能被封装成各种系统调用
编程层次:
硬件规格:hardware specifiacation(写操作系统时面向硬件规格(机器语言或汇编语言)直接变成)
系统调用:System Call( Syscall )
库调用:library call
e.g. mkdir /tmp/test
面条(库调用)--面粉(系统调用(->内核->特权))-- 麦种(硬件规格)
在一定程度上,操作系统类似于一个代理人
程序启动:开机启动+人为启动
程序运行模式:
用户空间:user space, us
内核空间:system space
UI:用户接口
GUI: Graphic User Interface(图形界面)
CLI: Command Line Interface(命令行接口)
用户接口程序和内核打交道(通过系统调用),
ABI:Application Binary Interface运行接口(可支持可执行程序的格式)
终端用户通常面对ABI
API:Application Programming Interface(应用编程接口)
跨平台编译
三、其他概念
POS: Portable Operating System可移植操作系统规范
POSIX
定义API: 编程接口
运行程序格式:
Windows: EXE, dll(dynamic link library动态链接库)
Linux: ELF, so(shared object共享对象)
程序:指令+数据
指令:只读
数据:读写
程序:算法+数据结构
库调用,系统调用:允许被调用的程序;e.g. malloc(), free()
节约存储空间
编程语言:
汇编语言:微码编程
系统中某些与硬件相关的特有代码、驱动程序开发;
高级语言C, C++: e.g. MySQL
系统级应用、驱动程序
高级应用java, python, php: 虚拟机(垃圾回收)—库调用
应用程序 e.g. web页面
参考资料:
①马哥随堂笔记
②《鸟哥的Linux私房菜-基础篇》
注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。