操作系统

  1. 操作系统是管理计算机硬件与软件资源的程序,是计算机的基石
  2. 操作系统本质是运行在计算机上的程序,用于管理计算机硬件与软件资源
  3. 操作系统屏蔽了硬件的复杂性
  4. 操作系统的内核是操作系统的核心,负责系统的内存管理,硬件设备管理,文件系统管理以及应用程序管理

内核

维基百科:

内核(英语:Kernel,又称核心)在计算机科学中是一个用来管理软件发出的数据 I/O(输入与输出)要求的电脑程序,将这些要求转译为数据处理的指令并交由中央处理器(CPU)及电脑中其他电子组件进行处理,是现代操作系统中最基本的部分。
它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并由内核决定一个程序在什么时候对某部分硬件操作多长时间。
直接对硬件操作是非常复杂的。所以内核通常提供一种硬件抽象的方法,来完成这些操作。有了这个,通过进程间通信机制及系统调用,应用进程可间接控制所需的硬件资源(特别是处理器及 IO 设备)。

总结:

  1. 它负责将应用数据的要求进行转译,并将转译后的数据交给cpu及其其它电子组件处理
  2. 它简化了应用程序操作硬件,是连接应用程序与硬件之间的桥梁

中央处理器(cpu)

何为cpu:

  1. cpu是一台计算机的运算核心+控制核心,计算机的大脑
  2. cpu包含两个部分: 控制器 + 运算器
  3. cpu的根本任务就是执行指令,对计算来说最终都是一串0和1组成的序列

cpu vs 内核(kernel)

  1. 操作系统是属于操作系统层面,是软件,cpu是属于硬件
  2. cpu主要提供运算,处理各种指令的能力。内核负责的是内存管理,屏蔽了对硬件的操作

kernel&&cpu&&app

系统调用

根据进程访问资源的特点,可以把进程在系统上的允许分为:

  1. 用户态: 用户态允许的进程或可以直接读取用户程序的数据
  2. 系统态: 系统态允许的进程或程序几乎可以访问计算机的任何资源,不受限制

我们的程序大多是用户态的,但凡需要访问任何计算机的资源,那都要发起系统调用,主要分为以下几种调用:

  1. 设备管理
  2. 文件管理
  3. 进程控制
  4. 进程通信
  5. 内存管理

compress

Linux

  1. 类unix系统
  2. Linux本质是指Linux内核
  3. Linux之父Linus

Linux文件系统

  1. 所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机普通文件或是目录都被看作一个文件。一切都是文件。
  2. Linux 的文件系统也是借鉴 UNIX 文件系统而来。
  3. 扇区: 硬盘最小的存储单元,大小为512字节
  4. 块(block): 多个扇区构成一个块,一个块只能存储一个文件。大小为4k。一个文件大于一个块,可以占用多个块
  5. 元信息: 记录员文件信息的空间,包括文件存储的各个块,每个块的地址,创建时间,拥有者等信息
  6. inode: Linux/unix文件系统的基础。存储文件元信息的区域就称为inode。使用stat命令可以查看inode信息

Linux文件类型

  • 普通文件: 存储信息和数据
  • 目录文件: 目录也是一个文件,包含文件名和子目录名
  • 链接文件: 指向文件的地址而不是文件本身
  • 字符文件: 用来访问字符设备,比如键盘
  • 设备文件: 访问块设备,比如硬盘、软盘
  • 管道文件: 特殊的文件,用于进程见通信
  • Socket套接字文件: 进程间网络通信,本机间非网络通信。

Linux文件目录

linux_dir

  • /bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;
  • /usr: 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把 tomcat 等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录(特权阶级^o^);
  • /sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • /lib : 存放着和系统运行相关的库文件;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。