操作系统
文章平均质量分 94
程序员cxuan
个人微信号【lx252279279】 一起学习,交流。
展开
-
chatGPT 答错了好几个问题!
嗯。。。。。。这个回答很像百度百科的官方回答。看起来没啥意思,让人昏昏欲睡。我想用 chatGPT 的回答来继续问他,看看能不能让他犯一些错误。这个问题回答的还是很不错的。以上基于 chatGPT 3.5 测试,问了 10 个问题,答错 6 个,如果没有一定的只是储备,很容易被这些答案带偏,我不知道它的训练模型是怎样的,就比如操作系统结构的那个问题,你拿 WIKI 百科的答案喂,都不会只产生两个结构。原创 2023-03-31 09:10:34 · 7807 阅读 · 2 评论 -
从 MMU 看内存管理
在计算机早期的时候,计算机是无法将大于内存大小的应用装入内存的,因为计算机读写应用数据是直接通过总线来对内存进行直接操作的,对于写操作来说,计算机会直接将地址写入内存;对于读操作来说,计算机会直接读取内存的数据。但是随着软件的不断膨胀和移动应用的到来,一切慢慢变了。我们想要手机既能够运行微信,同时又能够运行 QQ 音乐,还希望能够聊微博、刷知乎以及看股票。如果我们的手机内存只有 1G,那么显然是无法满足这些应用的,因为微信的后台程序都占用 1G 多内存了。那么就会有人说,把内存容量提高不就行了吗?这句话原创 2022-02-17 08:26:55 · 1230 阅读 · 1 评论 -
这可能最全的操作系统面试题
文章目录操作系统简介篇解释一下什么是操作系统操作系统的主要功能软件访问硬件的几种方式解释一下操作系统的主要目的是什么操作系统的种类有哪些为什么 Linux 系统下的应用程序不能直接在 Windows 下运行操作系统结构单体系统分层系统微内核客户-服务器模式为什么称为陷入内核什么是用户态和内核态用户态和内核态是如何切换的?什么是内核什么是实时系统Linux 操作系统的启动过程进程和线程篇多处理系统的优势什么是进程和进程表什么是线程,线程和进程的区别什么是上下文切换使用多线程的好处是什么进程终止的方式进程的终止原创 2021-04-13 09:34:08 · 40229 阅读 · 32 评论 -
学习操作系统,都有哪些硬核网站?
一般很少有人推荐操作系统的网站吧。。。。。。这几个网站来源于我平常的学习总结,也有一些是来源于网上优秀的回答,希望这几个网站能够助力你对操作系统有更深的认识。studytonightstudytonight 简直太棒了!!! studytonight 会包括 operationg system,但是并不是说 studytonight 就是一个单纯的 OS 学习网站,它是一个基础教程网,它的首页是这样的,不仅限于 os ,还会包括 Java、C、CSS、OS、Computer network 等。这个原创 2020-10-24 10:16:21 · 4473 阅读 · 0 评论 -
计算机发展极简入门
计算机自从 20 世纪 40 年代诞生以来,一直以史无前例的进步向前发展,如果说农业革命是第一次革命、工业革命是第二次革命的话,那么第三次革命就是 信息革命。计算机技术的进步几乎影响着社会的方方面面,硬件的进步使得程序员可以编写出各种各样优秀的应用软件。也许不久的将来虚拟现实、无人驾驶、无现金支付就会成为现实。计算应用分类计算机从用途上来讲主要分为三种:个人计算机(Personal Computer),也称为 PC,这是人们最熟知的一种计算机,个人计算机强调用户体验,价格低廉,性价比高,个人计算机原创 2020-07-30 11:09:07 · 3232 阅读 · 0 评论 -
真香!Linux 原来是这么管理内存的
Linux 内存管理模型非常直接明了,因为 Linux 的这种机制使其具有可移植性并且能够在内存管理单元相差不大的机器下实现 Linux,下面我们就来认识一下 Linux 内存管理是如何实现的。基本概念每个 Linux 进程都会有地址空间,这些地址空间由三个段区域组成:text 段、data 段、stack 段。下面是进程地址空间的示例。数据段(data segment) 包含了程序的变量、字符串、数组和其他数据的存储。数据段分为两部分,已经初始化的数据和尚未初始化的数据。其中尚未初始化的数据就是我原创 2020-07-28 13:49:48 · 9617 阅读 · 6 评论 -
主宰操作系统的经典算法
此篇文章带你梳理一下操作系统中都出现过哪些算法进程和线程管理中的算法进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。 那么如何选择合适的进程/线程运行是一项艺术。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,调度程序使用的算法叫做 调度算原创 2020-07-24 15:22:50 · 21500 阅读 · 11 评论 -
小白如何学习操作系统?
很多读者问我如何学习操作系统?推荐几本操作系统可以看的书?操作系统都需要学什么?有哪些视频可以看吗?下面我就针对性的对这些问题做一下我自己的阐述。学习操作系统不是为了让你设计一个操作系统,而是为了让你更好的了解其运行原理。如果你觉得操作系统有些难度的话,强烈推荐看一下我的这本 PDF。程序员必知核心基础知识这个 PDF 能让你对计算机的硬件和运行原理有基本的入门。这本 PDF 可以说是对任何小白都适用了,如果你能看完,就说明你有一定的基础了,可以正式入门操作系统了。我学习操作系统是根据机械工业出原创 2020-07-16 09:33:47 · 15164 阅读 · 8 评论 -
5万字、97 张图总结操作系统核心知识点
文末领取大图。这不是一篇教你如何创建一个操作系统的文章,相反,这是一篇指导性文章,教你从几个方面来理解操作系统。首先你需要知道你为什么要看这篇文章以及为什么要学习操作系统。搞清楚几个问题首先你要搞明白你学习操作系统的目的是什么?操作系统的重要性如何?学习操作系统会给我带来什么?下面我会从这几个方面为你回答下。操作系统也是一种软件,但是操作系统是一种非常复杂的软件。操作系统提供了几种抽象模型文件:对 I/O 设备的抽象虚拟内存:对程序存储器的抽象进程:对一个正在运行程序的抽象虚拟机:对整个.原创 2020-07-14 09:19:25 · 15553 阅读 · 11 评论 -
Linux 进程必知必会
上一篇文章只是简单的描述了一下 Linux 基本概念,通过几个例子来说明 Linux 基本应用程序,然后以 Linux 基本内核构造来结尾。那么本篇文章我们就深入理解一下 Linux 内核来理解 Linux 的基本概念之进程和线程。系统调用是操作系统本身的接口,它对于创建进程和线程,内存分配,共享文件和 I/O 来说都很重要。我们将从各个版本的共性出发来进行探讨。基本概念Linux 一个非常重要的概念就是进程,Linux 进程和我们在进程和线程 这篇文章中探讨的进程模型非常相似。每个进程都会运行一原创 2020-07-10 08:58:31 · 5613 阅读 · 1 评论 -
程序员不得不了解的硬核知识大全
我们每个程序员或许都有一个梦,那就是成为大牛,我们或许都沉浸在各种框架中,以为框架就是一切,以为应用层才是最重要的,你错了。在当今计算机行业中,会应用是基本素质,如果你懂其原理才能让你在行业中走的更远,而计算机基础知识又是重中之重。下面,跟随我的脚步,为你介绍一下计算机底层知识。CPU还不了解 CPU 吗?现在就带你了解一下 CPU 是什么CPU 的全称是 Central Processin...原创 2020-01-15 11:51:39 · 21563 阅读 · 15 评论 -
写给大忙人看的死锁全详解
前言计算机系统中有很多独占性的资源,在同一时刻只能每个资源只能由一个进程使用,我们之前经常提到过打印机,这就是一个独占性的资源,同一时刻不能有两个打印机同时输出结果,否则会引起文件系统的瘫痪。所以,操作系统具有授权一个进程单独访问资源的能力。两个进程独占性的访问某个资源,从而等待另外一个资源的执行结果,会导致两个进程都被阻塞,并且两个进程都不会释放各自的资源,这种情况就是 死锁(deadlock)。死锁可以发生在任何层面,在不同的机器之间可能会发生死锁,在数据库系统中也会导致死锁,比如进程 A 对记.原创 2020-06-28 15:10:12 · 2844 阅读 · 1 评论 -
操作系统 I/O 全流程详解
我们之前的文章提到了操作系统的三个抽象,它们分别是进程、地址空间和文件,除此之外,操作系统还要控制所有的 I/O 设备。操作系统必须向设备发送命令,捕捉中断并处理错误。它还应该在设备和操作系统的其余部分之间提供一个简单易用的接口。操作系统如何管理 I/O 是我们接下来的重点。不同的人对 I/O 硬件的理解也不同。对于电子工程师而言,I/O 硬件就是芯片、导线、电源和其他组成硬件的物理设备。而我们程序员眼中的 I/O 其实就是硬件提供给软件的接口,比如硬件接受到的命令、执行的操作以及反馈的错误。我们着重探.原创 2020-06-18 11:18:24 · 11967 阅读 · 0 评论 -
成为最好的 bestJavaer
缘起之前一直有很多小伙伴们找我,让我聊一聊如何学习 Java ,我都直接回复了一个思维导图,后来想一想觉得回答不是很认真,我的初衷是想让小伙伴们根据思维导图中的知识点,采取各个击破 的原则,哪里不会查哪里,后来想想这种回答方式没有多少人能够直接接受。大家更想要的是从我这里获得点什么。确实是,让小伙伴们自己上网找一些资料和博客,优劣性暂且不谈,主要是很多不全面而又浪费时间去看,所以后面想想确实是,所以,我直接自己硬上来为你们总结资料了。励志搞个 Java 蓝图所以针对上面这种情况,我打算自己绘制一篇蓝原创 2020-06-13 10:07:57 · 3822 阅读 · 0 评论 -
说了这么多次 I/O,但你知道它的原理么
O 软件目标设备独立性现在让我们转向对 I/O 软件的研究,I/O 软件设计一个很重要的目标就是设备独立性(device independence)。啥意思呢?这意味着我们能够编写访问任何设备的应用程序,而不用事先指定特定的设备。比如你编写了一个能够从设备读入文件的应用程序,那么这个应用程序可以从硬盘、DVD 或者 USB 进行读入,不必再为每个设备定制应用程序。这其实就体现了设备独立性的概念。再比如说你可以输入一条下面的指令sort 输入 输出那么上面这个 输入 就可以接收来自任意类型的磁盘原创 2020-06-02 17:29:01 · 2106 阅读 · 0 评论 -
看完这篇操作系统,和面试官扯皮就没问题了
解释一下什么是操作系统操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和 CPU 进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。解释一下操作系统的主要目的是什么操作系统是一种软件,它的主要目的有三种管理计算机资源,这些资源包括 CPU、内存、磁盘驱动器、打印机等。提供一种图形界面,就像我们前面描述的那样,它提供了用户和计算机之间的桥梁。原创 2020-05-15 07:34:44 · 4007 阅读 · 2 评论 -
我写了一本操作系统词典送你了
操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。Yna28K.pngshell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。 在过去,它是类似 U...原创 2020-05-08 11:10:17 · 3731 阅读 · 6 评论 -
操作系统核心概念第二弹来了!
字符设备(character devices):另一类 I/O 设备是字符设备。字符设备以字符为单位发送或接收一个字符流,而不考虑任何块结构。字符设备是不可寻址的,也没有任何寻道操作。常见的字符设备有 打印机、网络设备、鼠标、以及大多数与磁盘不同的设备。设备控制器(device controller): 设备控制器是处理 CPU 传入信号和传出信号的系统。设备通过插头和插座连接到计算机,...原创 2020-04-25 11:12:06 · 2807 阅读 · 1 评论 -
很用心的为你写了 9 道 MySQL 面试题
MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后面要加紧对 MySQL 的研究。写的如果不好,还请大家见谅。非关系型数据库和关系型数据库区别,优势比较非关系型数据库(感觉翻译不是很准确)称为 NoSQL,也就是 Not Only SQL,不...原创 2020-04-18 10:24:19 · 28179 阅读 · 48 评论 -
程序员必知的 89 个操作系统核心概念
操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。 在过去,它是类似 Unix 的系统上...原创 2020-03-31 19:13:39 · 36384 阅读 · 42 评论 -
简直不要太硬了!一文带你彻底理解文件系统
所有的应用程序都需要存储和检索信息。进程运行时,它能够在自己的存储空间内存储一定量的信息。然而,存储容量受虚拟地址空间大小的限制。对于一些应用程序来说,存储空间的大小是充足的,但是对于其他一些应用程序,比如航空订票系统、银行系统、企业记账系统来说,这些容量又显得太小了。第二个问题是,当进程终止时信息会丢失。对于一些应用程序(例如数据库),信息会长久保留。在这些进程终止时,相关的信息应该保留下来,...原创 2020-03-25 13:19:06 · 19654 阅读 · 47 评论 -
设计一个文件系统,需要考虑哪些因素?
文件系统的实现在对文件有了基本认识之后,现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么,如何找到正确的文件路径等问题。而设计人员关心的是文件和目录是怎样存储的、磁盘空间是如何管理的、如何使文件系统得以流畅运行的问题,下面我们就来一起讨论一下这些问题。文件系统布局文件系统存储在磁盘中。大部分的磁盘能够划分出一到多个分区,叫做磁盘...原创 2020-03-18 15:26:13 · 4473 阅读 · 0 评论 -
内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)
主存(RAM) 是一件非常重要的资源,必须要认真对待内存。虽然目前大多数内存的增长速度要比 IBM 7094 要快的多,但是,程序大小的增长要比内存的增长还快很多。不管存储器有多大,程序大小的增长速度比内存容量的增长速度要快的多。下面我们就来探讨一下操作系统是如何创建内存并管理他们的。经过多年的研究发现,科学家提出了一种 分层存储器体系(memory hierarchy),下面是分层体系的分类...原创 2020-03-09 13:43:11 · 38597 阅读 · 106 评论 -
又能扯皮了!没内存了还能看片?
虚拟内存尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他的问题需要解决:管理软件的膨胀(managing bloatware)。虽然内存的大小增长迅速,但是软件的大小增长的要比内存还要快。在 1980 年的时候,许多大学用一台 4 MB 的 VAX 计算机运行分时操作系统,供十几个用户同时运行。现在微软公司推荐的 64 位 Windows 8 系统至少需要 2 GB 内存,而许...原创 2020-03-06 14:43:56 · 4476 阅读 · 0 评论 -
写给大忙人看的进程和线程
我们平常说的进程和线程更多的是基于编程语言的角度来说的,那么你真的了解什么是线程和进程吗?那么我们就从操作系统的角度来了解一下什么是进程和线程。进程操作系统中最核心的概念就是 进程,进程是对正在运行中的程序的一个抽象。操作系统的其他所有内容都是围绕着进程展开的。进程是操作系统提供的最古老也是最重要的概念之一。即使可以使用的 CPU 只有一个,它们也支持(伪)并发操作。它们会将一个单独的 CPU...原创 2020-03-03 15:44:21 · 16119 阅读 · 69 评论 -
写给大忙人看的操作系统
文章主要结构图如下操作系统现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。然而,程序员不会直接和这些硬件打交道,而且每位程序员不可能会掌握所有计算机系统的细节,这样我们就不用再编写代码了,所以在硬件的基础之上,计算机安装了一层软件,这层软件能够通过响应用户输入的指令达到控制硬件的效果,从而满足用户需求,这种软件称之为 操作系统,它的...原创 2020-02-28 12:34:12 · 51871 阅读 · 113 评论 -
没有内存,怎么还能跑程序呢
主存(RAM) 是一件非常重要的资源,必须要小心对待内存。虽然目前大多数内存的增长速度要比 IBM 7094 要快的多,但是,程序大小的增长要比内存的增长还快很多。正如帕金森定律说的那样:不管存储器有多大,但是程序大小的增长速度比内存容量的增长速度要快的多。下面我们就来探讨一下操作系统是如何创建内存并管理他们的。经过多年的探讨,人们提出了一种 分层存储器体系(memory hierarchy),...原创 2020-02-26 10:33:00 · 13368 阅读 · 9 评论 -
一篇文章带你「重新认识」线程上下文切换怎么玩儿
调度当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,该程序使用的算法叫做 调度算法(scheduling algorithm) 。尽管有一...原创 2020-02-21 10:28:20 · 4976 阅读 · 0 评论 -
一文带你怼明白进程和线程通信原理
进程间通信进程是需要频繁的和其他进程进行交流的。例如,在一个 shell 管道中,第一个进程的输出必须传递给第二个进程,这样沿着管道进行下去。因此,进程之间如果需要通信的话,必须要使用一种良好的数据结构以至于不能被中断。下面我们会一起讨论有关 进程间通信(Inter Process Communication, IPC) 的问题。关于进程间的通信,这里有三个问题上面提到了第一个问题,那就是...原创 2020-02-18 11:46:08 · 5730 阅读 · 1 评论 -
万字长文带你还原进程和线程
我们平常说的进程和线程更多的是基于编程语言的角度来说的,那么你真的了解什么是线程和进程吗?那么我们就从操作系统的角度来了解一下什么是进程和线程。进程操作系统中最核心的概念就是 进程,进程是对正在运行中的程序的一个抽象。操作系统的其他所有内容都是围绕着进程展开的。进程是操作系统提供的最古老也是最重要的概念之一。即使可以使用的 CPU 只有一个,但它们也支持(伪)并发操作。它们会将一个单独的 CP...原创 2020-02-13 11:36:31 · 6204 阅读 · 0 评论