计算机基础第四章

计算机基础第四章

经典回顾

  • 上一章讲了计算机硬件里面的
    • 服务器硬件—硬盘
    • 服务器硬件—阵列卡
    • 服务器硬件—电源
    • 服务器硬件—显卡
    • 服务器硬件—网卡
    • 服务器硬件—热插拔技术
    • 服务器硬件—机柜
    • 服务器硬件—机柜
    • 存储基础知识---存储网络
    • 存储基础知识---存储网络
    • 存储基础知识---存储网络
  • 以后下去图片会很少了,主要以命令为主,当然也有不会有那么多图片了

操作系统

  • 上几章我们说的都是硬件,接下来我们说说软件,软件首先最重要的就是操作系统,接下我们就来说说操作系统
  • OS: Operating System,通用目的的软件程序
    • 硬件驱动
    • 进程管理
    • 内存管理
    • 网络管理
    • 安全管理
    • 文件管理
  • 操作系统本身就是个软件,他的作用就是来管理硬件
  • 这样就不需要用户来关心硬件的问题了


    1.png
  • 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操作系统编译执行
  • 运行程序格式:
    • 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 就是内核,内核就是来管理我们的硬件的
2.png
  • 这里说一个命令可以跟踪系统调用
[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
3.png

命令回顾

[root@CentOS7 ~]# time ls  可以测试出命令花了多长时间

 [root@CentOS7 ~]# yum  install     安装软件

[root@CentOS7 ~]# ltrace cat    跟踪命令掉了了那些函数库

[root@CentOS7 ~]# strace ls  测试软件

[root@CentOS7 ~]# ldd /bin/cat  测试软件用了哪些库

其他链接

推荐阅读更多精彩内容

  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    wildimgine阅读 1,623评论 0 4
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 4,046评论 0 10
  • 1.概念: 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是...
    浓睡不消残醉阅读 349评论 0 5
  • 第一章:操作系统引论 计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的...
    溪的风阅读 594评论 0 2
  • 第一章:操作系统引论 计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的...
    溪的风阅读 62评论 0 0