操作系统原理

以下是为您整理出来关于【操作系统原理】合集内容,如果觉得还不错,请帮忙转发推荐。

【操作系统原理】技术教程文章

Linux操作系统原理笔记【图】

在Linux操作系统内核内部,进程是通过一个链表,而且是一个双向链表来管理的。 进程描述符:每一个进程都有其描述符,每一个描述符彼此之间都有关联性的。 双向链表: 一个进程内部可能包含多个线程。 上下文切换(Context swtch) 假如说进程A从当前CPU上被拿走,切换成进程B,进程A有自己的描述符(task_struct),且被挂起。被Suspend(栈指针),CPU内部,包括指令计数器等保存下来。 保存在进程描述符文件当中。而进程...

Linux 操作系统原理 — 操作系统的本质【代码】【图】

目录 文章目录目录操作系统的起源操作系统和高级编程语言使硬件抽象化 操作系统的起源 在操作系统尚不存在的年代,人们通过各种按钮来控制计算机,这一过程非常麻烦。于是,有人开发出了仅仅具有加载和运行功能的监控程序(Supervisor),这就是操作系统的原型。 通过监控程序,程序员可以根据需要将各种应用程序加载到内存中运行。虽然仍旧比较麻烦,但现在开发的工作量得到了很大的缓解。随着时代的发展,人们在使用监控程序编写...

Linux 操作系统原理 — 系统结构【图】

目录 文章目录目录Linux 系统架构Linux 内核内存管理进程管理文件系统设备驱动程序网络接口Shell Linux 系统架构 Linux 系统一般有 4 个主要部分:内核、Shell、文件系统和应用程序。其中,内核、Shell 和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行应用程序、管理文件并使用系统。Linux 内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的...

Linux 操作系统原理 — 日志结构的文件系统与日志文件系统【图】

目录 文章目录目录日志结构的文件系统日志文件系统 日志结构的文件系统 技术的改变会给当前的文件系统带来压力。这种情况下,CPU 会变得越来越快,磁盘会变得越来越大并且越来越便宜(但不会越来越快)。内存容量也是以指数级增长。但是磁盘的寻道时间(除了固态盘,因为固态盘没有寻道时间)并没有获得提高。 这些因素结合起来意味着许多系统文件中出现性能瓶颈。为此,Berkeley 设计了一种全新的文件系统,试图缓解这个问题,这个...

Linux 操作系统原理 — Kernel【图】

目录 文章目录目录趣解 Linux 内核地基第一层跃层 趣解 Linux 内核 今天,我来为大家解读一幅来自 TurnOff.us 的漫画 “InSide The Linux Kernel” 。 TurnOff.us 是一个极客漫画网站,作者 Daniel Stori 画了一些非常有趣的关于编程语言、Web、云计算、Linux 相关的漫画。今天解读的便是其中的一篇。地基 地基(底层)由一排排的文件柜组成,井然有序,文件柜里放置着 “文件” —— 电脑中的文件。左上角,有一只胸前挂着 421 号...

Linux 操作系统原理 — 内存 — 基于局部性原理实现的内/外存交换技术【图】

目录 文章目录目录前文列表基于局部性原理实现的内-外存交换技术局部性原理Swap 交换分区 前文列表 《Linux 操作系统原理 — 内存 — 物理存储器与虚拟存储器》 《Linux 操作系统原理 — 内存 — 基于 MMU 硬件单元的虚/实地址映射技术》 基于局部性原理实现的内-外存交换技术 虚拟存储器的实现思想就是将内存作为辅存的缓存,使得计算机系统拥有了 主存+辅存(交换空间) 大小的存储空间,同时也拥有了接近于主存的访问速度。 局部...

Linux 操作系统原理 — 内存 — 大页内存【代码】【图】

目录 文章目录目录前文列表大页内存Linux 的大页内存大页的实现原理大页内存配置透明巨型页 THP大页面对内存的影响大页内存的性能问题 前文列表 大页内存 在页式虚拟存储器中,会在虚拟存储空间和物理主存空间都分割为一个个固定大小的页,为线程分配内存是也是以页为单位。比如:页的大小为 4K,那么 4GB 存储空间就需要 4GB/4KB=1M 条记录,即有 100 多万个 4KB 的页。我们可以相待,如果页太小了,那么就会产生大量的页表条目,...

【操作系统原理】 多级队列调度算法(轮转算法和短进程优先算法)【代码】

题目很简单,直接上代码: #include <iostream> #include <fstream> #include <string> using namespace std; typedef struct PCB {string name;int need; //运行需要的时间int turn; //周转时间PCB* next; //PCB结构体指针PCB(string nam,int ned,int tur,PCB*nex) { //构造函数name = nam;need = ned;turn = tur;next = nex;} };string name1[5] = { "p1","p2","p3","p4","p5" }; string name2[5] = { "p6","p7","p...