Linux简介

Unix的特点:

  1. Unix很简洁,Unix只提供几百个系统调用,并且每个调用都有明确的目的。
  2. 一切皆文件,对数据和对文件都是通过相同的系统调用接口:open(),read(),write(),lseek()和close()。
  3. Unix和系统工具都是用c语言写的。
  4. Unix通过fork()进程创建十分迅速。
  5. 简洁的进程间通信元语。

Unix已经发展成为一个支持多任务,多线程,虚拟内存,换页,动态链接和TCP/IP网络的现代操作系统。

操作系统包括:内核,设备驱动程序,启动引导程序,命令行Shell或者其他种类用户界面,文件管理工具和系统工具。

内核的组成程序

通常一个内核有负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序,网络、进程间通信程序,等。

内核空间和用户空间:内核空间就是执行内核代码,用户空间就是执行用户代码

内核不同于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限,这种被保护的内存空间,统称为内核空间。

应用程序将以用户态进入用户空间,只能访问内核划给的空间。

内核空间和用户空间有各自的地址空间,用户代码不能访问内核空间的数据,只能通过系统调用(通过硬件)。

用户空间和内核空间的主要区别:执行的代码的物理地址空间

内核空间有一个共享的堆栈,供所有内核代码动态调用。

系统调用



用户通过系统调用,执行内核函数代码,然后返回给进程。

就是调用内核的函数。

系统调用:应用程序通过调用库函数(比如C库),再由库来系统调用,从而让内核代其完成不同任务。

当应用程序执行一条系统调用,我们就说内核正在带其执行。

有些库函数,系统调用只是其完成中的一个步骤

举例:printf()函数,提供了数据缓存和格式化等操作,而write()只是printf()其中一项操作。

有些库函数,就是一个系统调用

open()就是open()

有些库函数,没有包含系统调用

strcpy()

硬件通过中断机制和硬件设备通信

当硬件想要和系统通信时,它首先发出一个异步的中断信号去打断处理器的执行,继而打断内核的执行。通过中断号,内核能找到相应的中断服务程序来处理中断。

举例:当敲击键盘时,键盘控制器发送一个中断信号告知系统,键盘缓冲区有数据到来,内核根据中断号调用终端服务,然后告诉键盘控制器,可以继续输入数据了。

操作系统有专门执行中断的上下文

保证中断服务程序能在第一时间处理中断,然后快速退出。

只有两个上下文:进程上下文和中断上下文

处理器在任何时间点的活动必然概括为三种:

  1. 运行于用户空间,执行用户进程
  2. 运行于内核空间,处于进程上下文,代表某个特定的进程执行
  3. 运行于内核空间,处于中断上下文,与任何进程无关,处理特定中断。
    包括所有情况。
    举例:当CPU空闲时,内核就运行一个空进程,处于进程上下文,但运行于内核空间。


    在取指令,执行指令后进行中断周期

单内核和微内核:Linux是单内核,但是拥有模块化设计,抢占式内核,支持内核线程,动态装载内核模块

单内核模块之间可以相互调用

内核的分模块

单内核:

内核设计为单内核,就是将内核从整体上作为一个单独的大过程来实现,运行在一个单独的地址空间,内核间的通信微不足道,都可以直接调用,内核以单个的二进制文件存在于磁盘.

简单,高性能

微内核:

所有服务都独立运行并且运行在各自的地址空间上。消息通信,上下文切换。4次如下

linux特色

Linux对线程的支持:内核并不区分线程和其他的一般进程,对于内核来说,所有的进程都一样,只不过是一些共享资源而已。

Linux提供具有设备类的面向对象的设备模型,用户空间的文件系统

相关推荐
linkingvision1 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa1 小时前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu1 小时前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287561 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
belldeep1 小时前
WSL 安装 Debian 12 后,Linux 如何安装 vim ?
linux·debian·vim
wqqqianqian2 小时前
国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域
linux·word·自定义·pageoffice·数据区域
小疆智控2 小时前
数字化工厂升级引擎:Modbus TCP转Profinet网关助力打造柔性生产系统
服务器·网络·tcp/ip
南棱笑笑生2 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
XMYX-02 小时前
Linux du 命令终极指南:从基础到精通
linux·服务器
小锋学长生活大爆炸3 小时前
【教程】Docker更换存储位置
运维·docker·容器