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提供具有设备类的面向对象的设备模型,用户空间的文件系统

相关推荐
QH1392923188026 分钟前
Keysight N9917B N9918B手持式综合微波分析仪
网络·科技·嵌入式硬件·集成测试·信息与通信
Drgfd26 分钟前
半导体国产替代进入“深水区”:决战设备、材料、IP三大高地
网络·fpga开发
lightqjx1 小时前
【Linux系统】基础 IO
linux·c语言·重定向·缓冲区·文件io·文件的系统调用
我星期八休息1 小时前
扩展— TCP 全连接队列与 tcpdump 抓包
linux·服务器·开发语言·前端·网络·tcp/ip·tcpdump
各类产品分享1 小时前
什么是AR智慧运维系统,主要能解决什么问题
运维·ar·ar智慧运维解决方案
byte_conn1 小时前
高压级联储能通信架构:CAN隔离与光纤中继的选型实战
网络·架构·制造·信息与通信
RisunJan1 小时前
Linux命令-skill(发送信号给进程)
linux·运维·服务器
潘正翔1 小时前
k8s基础_kubeadm搭建k8s集群
linux·运维·docker·云原生·容器·kubernetes
Echo flower1 小时前
Docker 容器中 Puppeteer 僵尸进程排查与修复
运维·docker·容器·puppeteer
骊城英雄1 小时前
彩笔运维勇闯机器学习--逻辑回归
运维·机器学习·逻辑回归