计算机基础第四章
经典回顾
- 上一章讲了计算机硬件里面的
- 服务器硬件—硬盘
- 服务器硬件—阵列卡
- 服务器硬件—电源
- 服务器硬件—显卡
- 服务器硬件—网卡
- 服务器硬件—热插拔技术
- 服务器硬件—机柜
- 服务器硬件—机柜
- 存储基础知识---存储网络
- 存储基础知识---存储网络
- 存储基础知识---存储网络
- 以后下去图片会很少了,主要以命令为主,当然也有不会有那么多图片了
操作系统
- 上几章我们说的都是硬件,接下来我们说说软件,软件首先最重要的就是操作系统,接下我们就来说说操作系统
- OS: Operating System,通用目的的软件程序
- 硬件驱动
- 进程管理
- 内存管理
- 网络管理
- 安全管理
- 文件管理
- 操作系统本身就是个软件,他的作用就是来管理硬件
-
这样就不需要用户来关心硬件的问题了
- OS分类
- 服务器OS:RHEL, CentOS,Windows Server,AIX
- 桌面OS:Windows 10,Windows 7,Mac OS,Fedora
- 移动设备OS:Andriod,IOS,YunOS
- 开发接口标准
- ABI: Application Binary Interface
- ABI描述了应用程序与OS之间的底层接口,允许编译好的目
- 标代码在使用兼容ABI的系统中无需改动就能运行
- API:Application Programming Interface,应用程序开发接口
- API定义了源代码和库之间的接口,因此同样的源代码可以
- 在支持这个API的任何系统中编译
- POSIX: Portable Operating System Interface
- IEEE在操作系统上定义的一系列API标准
- POSIX兼容的程序可在其它POSIX操作系统编译执行
- ABI: Application Binary Interface
- 运行程序格式:
- Windows: EXE, .dll(dynamic link library),.lib(静态库)
- Linux: ELF, .so(shared object), .a(静态库)
- 动态库比较依赖库,但是很小方便
- 静态库文件比较大,浪费资源
- 但是库只能工作在,用户空间,所谓用户空间就是,用户需要去调用库
- 用ldd 命令可以查看文件用到了那些动态库
[root@CentOS7 ~]# ldd /bin/cat
linux-vdso.so.1 => (0x00007fff29ba0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f35e842b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f35e87f4000)
- System call 就是一个银行里面分柜台服务员,你要什么他给你调取什么
- Kernel 就是内核,内核就是来管理我们的硬件的
- 这里说一个命令可以跟踪系统调用
[root@CentOS7 ~]# strace ls 由于显示太长我就没复制结构了,但是必须要安装哦
[root@CentOS7 ~]# ltrace cat 跟踪命令掉了了那些函数库
[root@CentOS7 ~]# yum install 命令 必须要安装哦
- 系统调用是工作在内核级的
- Library是工作在用户空间的
- 这里说出一个命令
[root@CentOS7 ~]# time ls 可以测试出命令花了多长时间
anaconda-ks.cfg
real 0m0.002s
user 0m0.000s
sys 0m0.002s
用户和内核空间
- 用户空间:User space
- 用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响
- 只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(system call),才能向内核发出指令
- 内核空间:Kernel space
- 是 Linux 内核的运行空间
- 可以执行任意命令,调用系统的一切资源
- 示例:
- str = “www.magedu.com" // 用户空间
- x = x + 100 // 用户空间
- file.write(str) // 切换到内核空间
- y = x + 200 // 切换回用户空间
- 第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要
写入文件,就要切换到 Kernel space,因为用户不能直接写文件,必须
通过内核安排。第四行又是赋值运算,就切换回 User space
命令回顾
[root@CentOS7 ~]# time ls 可以测试出命令花了多长时间
[root@CentOS7 ~]# yum install 安装软件
[root@CentOS7 ~]# ltrace cat 跟踪命令掉了了那些函数库
[root@CentOS7 ~]# strace ls 测试软件
[root@CentOS7 ~]# ldd /bin/cat 测试软件用了哪些库