Backend-Development
  • Introduce
  • 操作系统和Linux
    • 操作系统基础
      • 进程
      • 进程间通信
      • 线程 & 协程
      • 调度
      • 互斥 & 同步
      • 死锁 & 饥饿
      • 内存管理
      • 文件系统
      • IO
    • Linux
      • Linux共享内存
      • Linux进程的内存空间布局
      • 僵尸进程和孤儿进程
      • 用户态和内核态
      • Linux进程调度算法
      • 理解inode
      • Linux进程间通信
      • Linux虚拟文件系统
      • CPU亲和性
      • 零拷贝技术
      • Linux IO栈
    • Linux常考命令
      • 管道和重定向
      • 文本处理三剑客
      • 文件和目录管理
      • 进程&内存&CPU管理
      • 用户&组管理
      • 网络管理
    • Linux系统调用
      • 内存
      • 进程
    • Linux系统编程
      • Linux堆内存管理
      • pthread库
    • Shell编程
  • 网络通信与网络编程
    • 计算机网络
      • 应用层其他协议
      • 应用层之DNS协议
      • 应用层之HTTP/3协议
      • 应用层之HTTPS协议
      • 应用层之HTTP协议
      • 传输层之UDP协议
      • 传输层之TCP协议
      • 网络层其他协议
      • 网络层之IP协议
      • 数据链路层
      • 物理层
    • 网络编程
      • cookie、session、token
      • TCP的粘包问题
      • 幂等性
      • 网络IO模型
      • 多路复用IO
      • Socket编程
      • 高并发服务器
    • Linux网络编程之底层
      • 传输控制块TCB
      • TCP数据发送之tcp_sendmsg()
      • TCP选项之MSS
    • 网络安全
    • Nginx
    • Wireshark
    • Libevent
  • 数据库
    • 数据库相关概念
    • 关系数据库设计范式
    • SQL
      • 初级SQL
      • 中级SQL
      • 高级SQL
    • Redis
      • Redis数据结构
      • Redis数据类型
      • 数据持久化
      • 雪崩 & 击穿 & 穿透
      • 主从复制
      • Redis集群
    • MySQL
      • MySQL数据类型
      • 事务
      • 事务隔离
      • 存储引擎
      • MyISAM与InnoDB
      • 锁机制
      • 索引
      • 联合索引
      • 主从复制
      • MySQL集群
      • MySQL使用总结
    • MongoDB
      • 启动与停止
      • 查询
    • Memcached
  • 组成原理和体系结构
    • 定点数 & 浮点数 & 内存
    • 体系结构
  • 编译和调试
    • 编译原理
    • Gdb调试
    • 内存屏障
    • 编译器优化
    • make/Makefile
    • cmake
    • 交叉编译
    • C++单元测试
    • 单元测试之Google Test
  • 设计模式
    • 设计模式
    • “组件协作”模式
  • 其他
    • 正则表达式
      • 基本正则表达式
      • 扩展正则表达式
    • Git版本控制
      • 提交代码
      • 常用命令
    • 编码和字符集
    • Vim用法
    • 一文解“锁”
    • 无锁技术
    • 面试中的“锁”
  • 面试题
    • 计算机网络面试题
    • 操作系统面试题
    • 数据库面试题
    • 其他面试题
    • 场景题总结
    • 智力题
Powered by GitBook
On this page
  • 1、认识操作系统
  • 1.1、基本特征
  • 1.2、基本功能
  • 1.3、系统结构
  • 2、用户接口

Was this helpful?

  1. 操作系统和Linux

操作系统基础

PreviousIntroduceNext进程

Last updated 4 years ago

Was this helpful?

1、认识操作系统

操作系统(OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。UNIX是第一个实用化的分时操做系统,是第一个真正体现操作系统领域各种先进概念和技术的操作系统。

1.1、基本特征

  1. 并发性:引入进程:提高了系统资源的利用率和系统吞吐量,并改善了系统的性能。 引入线程:对它的调度所付出的开销比进程小得多,能更高效地提高系统内多个程序间并发执行的程度。

  2. 共享性:互斥共享方式:在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。 同时访问方式:允许在一段时间内由多个进程同时对它们进行访问。

  3. 虚拟技术:通过某种技术把一个物理实体变为若干个逻辑上的对应物。 时分复用技术:利用处理机的空闲时间运行其他程序,提高处理机的利用率。空分复用技术:利用存储器的空闲空间存放其他程序,提高内存的利用率。

  4. 异步性:进程以不可预知的速度向前推进。

1.2、基本功能

  1. 处理机管理:主要控制和管理CPU的工作。(CPU管理)

  2. 存储管理:主要进行内存的分配和管理 (内存管理:内存分配、地址映射、内存保护与共享、虚拟内存等)

  3. 设备管理:主要管理基本的输入输出设备 (IO管理:完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理、虛拟设备等)

  4. 文件管理:负责对计算机文件的组织、存储、操作和保护等。 (文件管理:文件存储空间的管理、目录管理、文件读写管理和保护等)

  5. 进程管理:也称为作业管理,是指对计算机所进行的操作进行管理。 (作业管理或者进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度等)

1.3、系统结构

大内核:大内核是将操作系统功能作为一个紧密结合的整体放到内核。 由于各模块共享信息,因此有很高的性能。

微内核:由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。 在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。

微内核OS结构

  • 足够小的内核

  • 基于客户/服务器模式

  • 应用“机制与策略分离”原理

  • 采用面向对象技术

微内核的基本功能

  • 进程(线程)管理

  • 低级存储器管理

  • 中断和陷入处理

微内核操作系统存在的问题:运行效率降低。

微内核OS的效率降低的最主要原因:频繁地在用户态和核心态之间进行切换。即在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式以及上下文的多次切换。

Linux系统层次结构如下:

用户使用计算机的两种方式:命令行(CLI)、用户图形界面(GUI)。不管是命令行还是图形,用户实质上都是通过程序来使用计算机。一般说来,用户可以通过两类接口请求操作系统的服务,一类是作业级接口(操作级接口,命令级接口),如命令语言、JCL等;另一类是编程接口(即程序级接口),即提供一组系统调用 ,供实用程序、应用程序与用户程序等请求操作系统的服务。

1.3.1、大内核与微内核

2、用户接口

✏️
🖋️
🖋️
🖋️
🎤
✏️