-
linux系统的组成部分
-
linux内核:内核是操作系统的核心,责管理硬件资源、提供进程调度、文件系统和设备驱动程序等基本功能
-
Shell:是用户与操作系统之间的接口,它接受用户输入的命令,并将其传递给内核执行
-
文件系统:用于存储和组织数据的方式
-
GUN工具集:是一系列的开源软件工具,包括编译器、文本剪辑器、调试器
-
应用程序库:Linux提供了许多应用程序库,如C库、图形界面库
-
用户空间工具:Linux提供了各种实用程序和应用软件,包括shell命令解释器、文本编辑器、网络工具
-
-
linux内核的组成部分
-
进程管理:负责创建、调度和终止进程,以及管理进程之间的通信和同步
-
内存管理:负责管理系统的物理内存和虚拟内存
-
文件系统:提供了对硬盘上文件的读写和管理功能
-
设备驱动程序:用于与硬件设备进行交互
-
网络协议栈:实现了网络通信协议(如TCP/IP)以及网络设备的驱动程序
-
系统调用接口:提供给用户空间应用程序访问内核功能的接口,通过系统调用可以请求内核执行某些特定任务。
-
中断处理:负责处理外部设备发出的中断信号
-
调度器:决定哪个进程在特定时间段内运行
-
-
linux调度原理
-
Linux的调度原理是基于时间片轮转调度算法和优先级调度算法
-
时间片轮转调度算法:每个进程被分配一个时间片(通常为几毫秒),在这个时间片内运行。当时间片用完后,操作系统会中断当前进程,并将其放回就绪队列的尾部,然后选择下一个可运行的进程来执行。这样,所有进程都能够以公平的方式获得CPU资源。
-
优先级调度算法:每个进程都有一个静态优先级和动态优先级。静态优先级是根据进程属性和nice值(用户指定的相对优先级)计算出来的,而动态优先级则根据实际运行情况进行动态调整。具有较高优先级的进程会更早地被选择执行。
-
-
逻辑地址、线性地址、物理地址、总线地址、虚拟地址之间有什么区别
-
逻辑地址:逻辑地址是在程序中使用的地址,由程序员指定。它是相对于程序自身的一种抽象表示,与实际的内存或设备无关
-
线性地址/虚拟地址:是经过分段机制和分页机制转换后得到的地址。分段机制将逻辑地址转换为线性地址空间,并通过分页机制将线性地址映射到物理内存。
-
物理地址:物理地址是真正访问内存时使用的实际硬件上的物理位置。当CPU发出访问请求时,通过硬件层次上的映射关系,将线性地址转换为物理地址,从而找到对应数据或指令所在的物理位置。
-
总线地址:总线是计算机系统中不同组件之间进行通信和数据传输的路径。总线有多个信号线,其中包括了用于寻址和传输数据等目标。总线地址就是在这些信号线上发送给内存或其他设备以选择特定资源或操作所需信息。
-
虚拟地址:虚拟地址是指通过分页机制将线性地址映射到物理内存之前,由操作系统提供的一种抽象地址。
-
-
系统调用的作用是什么
-
提供访问底层硬件资源的能力
-
实现进程管理与通信
-
访问文件和文件系统
-
内存管理
-
网络通信
-
-
用户空间和内核通信的方式有哪些
-
系统调用:用户空间的程序可以通过系统调用接口向内核发起请求,请求执行特权操作或获取内核提供的服务
-
中断:硬件设备或软件事件可以触发中断,引发处理器从用户空间切换到内核态,并执行相应的中断处理程序。
-
信号:信号是一种轻量级的通信机制,用于通知进程发生了某个事件。用户空间可以发送信号给自身或其他进程,并由内核处理信号。
-
共享内存:共享内存允许多个进程访问同一块物理内存区域,实现高效的数据共享。
-
管道:管道是一种半双工的、基于字节流的通信机制。它可以在相关联的进程之间传递数据。用户空间可以通过创建管道,并在其中写入或读取数据,以与其他进程进行通信。
-
文件:用户空间可以通过文件系统访问内核提供的特殊文件,如设备文件(/dev),来实现与内核的通信。
-
-
内核态和用户态的区别
-
内核态
-
在内核态下,程序可以执行所有的特权指令和访问系统资源
-
运行在内核态的代码拥有最高权限,并且可以直接访问底层硬件设备和操作系统的核心功能
-
内核态主要用于操作系统内部的任务,如管理进程、文件系统、设备驱动等
-
-
用户态
-
在用户态下,程序只能执行受限制的指令集,并且无法直接访问底层硬件设备和操作系统资源。
-
用户程序运行在用户态下,相对于内核来说是外部应用程序。
-
用户程序不能直接操纵系统资源或者调用特权指令,而需要通过向操作系统发起请求来完成这些操作。
-
-