操作系统
文章平均质量分 85
JavaEdge.
关注并私信我,获取更多大厂求职经验。《编程严选网》创始人
展开
-
CPU流水线越大越好吗?
流水线技术和其他技术一样,需Trade-Off。一个合理的流水线深度,会提升CPU执行计算机指令的吞吐率。一般用IPC(Instruction Per Cycle)来衡量CPU执行指令的效率。IPC是CPI(Cycle Per Instruction)的倒数。即IPC = 3对应CPI = 0.33。Pentium 4和Pentium D的IPC都远低于自己上一代的Pentium III以及竞争对手AMD的Athlon CPU。过深流水线不仅不能提升计算机指令吞吐率,还会加大计算功耗和散热。原创 2023-01-14 06:13:35 · 671 阅读 · 0 评论 -
CPU流水线竞争解决方案
增加资源,通过添加指令缓存和数据缓存,让我们对于指令和数据的访问可以同时进行。这个办法帮助CPU解决了取指令和访问数据之间的资源冲突。就像是在软件开发过程,发现效率不够,于是研发负责人说:“我们需双倍研发资源。”直接进行等待。通过插入NOP这样的无效指令,等待之前的指令完成。这样我们就能解决不同指令之间的数据依赖问题。好比你在提需求时,研发负责人告诉你说:“来不及做,你只能等我们需求排期。”“堆资源”、“等排期”这种解决方案,你懂的,并不能提高效率,只是避免和现有任务冲突。解决流水线冒险的问题.原创 2023-01-13 19:43:51 · 472 阅读 · 1 评论 -
指令+运算=CPU
引入时序电路,就可以把数据“存储”下来。通过反馈电路,创建了时钟信号,然后再利用这个时钟信号和门电路组合,实现“状态记忆”。电路的输出信号不单单取决于当前的输入信号,还要取决于输出信号之前的状态。最常见的这个电路就是我们的D触发器,它也是我们实际在CPU内实现存储功能的寄存器的实现方式。“冯·诺伊曼”机关键就是程序需要可以“存储”,而不靠固定线路连接或手工拨动开关,实现计算机的可存储和可编程的功能。参考《编码:隐匿在计算机软硬件背后的语言》14章~16章。原创 2023-01-11 00:23:21 · 238 阅读 · 0 评论 -
CPU基本结构和运行原理
FSB总线:前端总线(Front Side Bus),CPU和北桥之间的桥梁,CPU和北桥传递的所有数据必须经过FSB总线,FSB总线的频率直接影响到CPU访问内存的速度。有些总线地址和数据是分离的,有些是同一根总线分时利用。AL和AH是1字节,也就是8位寄存器,AX是16位,EAX是32位,RAX是64位。D触发器可保存数据,为了保证触发器的输出Q是正确的值,一定要让D信号稳定后,才在时钟的上升沿打入触发器。如下图所示,两片8259A级联可以处理共15种中断,其中包括时钟,键盘,软盘,硬盘,DMA等等。原创 2023-01-09 23:48:24 · 1262 阅读 · 0 评论 -
Volatile和高速缓存的关系
volatile程序可以看到,在有缓存的情况下会遇到一致性问题。volatile这个关键字可以保障我们对于数据的读写都会到达主内存。Java内存模型和CPU、CPU Cache以及主内存的组织结构非常相似。在CPU Cache里,对于数据的写入,我们也有写直达和写回这两种解决方案。写直达把所有的数据都直接写入到主内存里面,简单直观,但是性能就会受限于内存的访问速度。而写回则通常只更新缓存,只有在需要把缓存里面的脏数据交换出去的时候,才把数据同步到主内存里。在缓存经常会命中的情况下,性能更好。原创 2022-12-17 17:19:02 · 1363 阅读 · 1 评论 -
图解操作系统-cpu cache
缓存是整个存储体系结构的灵魂,它让内存访问的速度接近于寄存器的访问速度。缓存对程序员是透明的,程序员不必使用特定的API接口来操作缓存工作,它是自动工作的。但如果我们的代码写得不好的话,我们就会感受到缓存不能起作用时的性能下降了。缓存的映射方式包括了直接相连、全相连、组组相连三种。直接相连映射会导致缓存块被频繁替换;而全相连映射可以很大程度上避免冲突,但查询效率低;组组相连映射,与直接相连映射相比,产生冲突的可能性更小,与全相连映射相比,查询效率更高,实现也更简单。原创 2022-10-25 22:43:53 · 8646 阅读 · 17 评论 -
Linux stress命令详解
stress 命令主要用来模拟系统负载较高时的场景,本文介绍其基本用法。文中 demo 的演示环境为 ubuntu 18.04。1 安装 stressUbuntu 系统默认没有安装 stress,需要通过下面的命令安装:$ sudo apt install stress$ stress --version2 语法stress <options>3 可选参数-c, --cpu N 产生 N 个进程,每个进程都反复不停的计算随机数的平方根-i, --原创 2020-12-17 10:31:59 · 4653 阅读 · 0 评论 -
sudo unable to resolve host错误
万能简易视频播放器sudo apt-get install smplayer原创 2017-10-14 16:33:58 · 1284 阅读 · 0 评论 -
Linux再学习(一)-学习路线规划
1 抛弃旧文化,迎接Linux命令新文化Linux第一步,从Windows思维,切换到Linux的“命令行+文件”模式在Linux中,做什么都有相应命令。一般就在bin或者sbin目录下,数量繁多。如果你事先不知道该用哪个命令,很难通过枚举的方式找到。因此,在这样没有统一入口的情况下,就需要你对最基本的命令有所掌握。一旦找到某个命令行,替代输入框的是各种各样的启动参数。这些参数怎么填,...原创 2019-08-04 01:18:24 · 1328 阅读 · 0 评论 -
1
rm -rfmkdirls -al原创 2020-10-05 19:48:51 · 1458 阅读 · 0 评论 -
Linux内核:memory barrier
一、前言我记得以前上学的时候大家经常说的一个词汇叫做所见即所得,有些编程工具是所见即所得的,给程序员带来极大的方便。对于一个c程序员,我们的编写的代码能所见即所得吗?我们看到的c程序的逻辑是否就是最后CPU运行的结果呢?很遗憾,不是,我们的“所见”和最后的执行结果隔着:1、编译器2、CPU取指执行编译器将符合人类思考的逻辑(c代码)翻译成了符合CPU运算规则的汇编指令,编译器了解底层CPU的思维模式,因此,它可以在将c翻译成汇编的时候进行优化(例如内存访问指令的重新排序),让产出的汇编指令在转载 2020-10-06 03:38:25 · 1216 阅读 · 0 评论 -
一文搞懂select、poll和epoll区别
1 selectselect本质上是通过设置或检查存放fd标志位的数据结构进行下一步处理。这带来缺点:单个进程可监视的fd数量被限制,即能监听端口的数量有限单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64位机器上FD_SETSIZE为3264),当然我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响,这需要进一步的测试一般该数和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-ma原创 2020-11-04 00:14:57 · 1684 阅读 · 1 评论 -
【建议收藏】Linux工作/面试常用命令集锦
管道符“|”将两个命令隔开,左边命令的输出作为右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推1 文件管理1.1 which用于查找文件会在环境变量$PATH设置的目录里查找符合条件的文件语法which [文件...]参数-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件原创 2021-06-08 12:37:21 · 5558 阅读 · 5 评论 -
【图解Linux内核】Page Cache
在资深开发的日常,经常能遇见和Page Cache相关场景:服务器的load飙高服务器的I/O吞吐飙高业务响应时延出现大的毛刺业务平均访问时延明显增加。这些问题,很可能是由于Page Cache管理不到位引起的,因为Page Cache管理不当除了会增加系统I/O吞吐外,还会引起业务性能抖动。这类问题出现后,开发人员往往束手无策,究其原因在于他们对Page Cache的理解仅仅停留在概念上,并不清楚Page Cache如何和应用、系统关联起来,对它引发的问题自然会束手无策了。认识Page原创 2021-06-21 17:40:59 · 1441 阅读 · 0 评论 -
Linux 常用命令全拼
pwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径ps: process status(进程状态,类似于windows的任务管理器)常用参数:-auxfps -auxf 显示进程状态df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。换句话说,就是报告在任何安装的设备或目录中,还剩多少自由的空间。du: Disk ...原创 2019-10-06 21:15:34 · 1953 阅读 · 0 评论 -
Nginx下载安装及基本命令
是什么是一款轻量级Web服务器,也是一款反向代理服务器能干什么可直接支持 rails和php程序可作为http反向代理服务器作为负载均衡服务器作为邮件代理服务器帮助实现前端动静分离特点高稳定 高性能 资源占用少 功能丰富 模块化结构 支持热部署安装(Windows10环境)原创 2017-10-14 21:24:21 · 1080 阅读 · 0 评论 -
Linux根文件系统(rootfs原理详解)
linux中有一个让很多初学者都不是特别清楚的概念,叫做“根文件系统”。我接触linux前前后后也好几年了,但是对这个问题,至今也不是特别的清楚,至少没法给出一个很全面很到位的解释。于是,今天我们就来理一理这个话题。一、先交代一下文件系统在开始讨论根文件系统这个话题之前,我们必首先交代一下文件系统这个概念。毕竟,根文件系统只是文件系统中的一种比较特殊的形式而已。根据伟大的百度百科:文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;原创 2020-09-23 16:22:31 · 5063 阅读 · 0 评论 -
Nginx下载安装及基本命令
下载安装yum install nginx安装成功后默认的网站目录为: /usr/share/nginx/html默认的配置文件为:/etc/nginx/nginx.conf自定义配置文件目录为: /etc/nginx/conf.d/启动 nginx验证启动成功输入云服务器的公网 ip 即可看到欢迎页,80 端口默认的不需要显式添加是什么是一款轻量级Web服务器,也是一款反向代理服务器能干什么可直接支持 rails和php程序可作为http反向代理服务器原创 2020-07-19 18:56:51 · 1453 阅读 · 0 评论 -
VirtualBox如何添加ISO文件
最近学习k8s,想先在虚拟机上操作练练手,装个ubuntu。但VirtualBox似乎只支持vmdk等类型的文件,但我下的是iso镜像文件啊。点击新建的时候,大概是这样的:继续~默认即可,继续~创建~继续~创建~看到系统咯。右键点击设置~选择存储,再选控制器IDE,点击右边icon进入文件查找,可选择iso文件~因为我已经创建过了,所以这里左移一箭头不是没有盘片了...原创 2020-10-21 17:40:50 · 4590 阅读 · 0 评论 -
互联网时代下机械硬盘的发展史
无论是作为个人电脑的数据盘,还是在数据中心里面用作海量数据的存储,机械硬盘仍然在被大量使用。随着成本下降,机械硬盘还替代掉了很多传统的存储设备,如以前常用来备份冷数据的磁带。拆解机械硬盘机械硬盘的IOPS大概只能做到每秒100次左右。机械硬盘拆开,自然知道为什么它的IOPS是100左右了。硬盘的构造,里面有接口,有对应的控制电路版,以及实际的I/O设备(也就是我们的机械硬盘)。一块机械硬盘是由盘面、磁头和悬臂三个部件组成的。盘面(Disk Platter)实际存储数据的盘片。本身通常是用的铝原创 2021-12-11 21:56:11 · 2109 阅读 · 6 评论 -
重学计算机组成原理(4)-还记得纸带编程吗?
以前写程序用“打孔卡(Punched Card),没法像今天,掏出键盘就能打字,而是要先在脑海/纸写出程序,然后在纸带/卡片上打洞。这样,要写的程序、要处理的数据,就变成一条条纸带或者一张张卡片,之后再交给当时的计算机去处理。上世纪60年代晚期或70年代初期,Arnold Reinold拍摄的FORTRAN计算程序的穿孔卡照片人们在特定的位置上打洞或者不打洞,来代表“0”或者“1”。计算机或说CPU本身,并没有能力理解这些高级语言,即使在2019年的今天,我们使用的现代个人计算机,仍然只能处理所原创 2019-08-13 00:30:22 · 1395 阅读 · 0 评论 -
重学计算机组成原理(8)-程序是如何被装载的
80年代640K内存对哪个人都够用了。那时微软开发的还是DOS os,程序员们还在想如何压榨完有限的640K内存。而现在,随便一个笔记本都16G内存了,比那时多了一万倍。那当时这种言论是无稽之谈吗?为何觉得这么小内存就够了呢?1 如何才能实现程序装载?在运行这些可执行文件时,是通过装载器解析ELF或PE格式的可执行文件。装载器会将对应指令和数据加载到内存,让CPU去执行。要实现装载到内存,则装载器需满足:可执行程序加载后,占用的内存空间是连续的执行指令时,程序计数器是顺序一条条指令执行。这就原创 2019-08-17 22:02:54 · 1485 阅读 · 0 评论 -
CPU是如何解决冒险问题的?
想通过流水线设计来提升CPU的吞吐率,我们需要冒哪些风险。流水线设计需解决的三大冒险:结构冒险(Structural Hazard)数据冒险(Data Hazard)控制冒险(Control Hazard)CPU流水线设计里,会遇到各种“危险”,使得流水线的下一条指令不能正常运行。但还是通过“抢跑”,“冒险”拿到一个提升指令吞吐率的机会。流水线架构的CPU,是主动进行的冒险选择。期望能够通过冒险带来更高回报,所以,这不是无奈之下的应对之举,自然也算不上什么危机。对于各种冒险可能造成的问题,原创 2021-11-27 16:59:58 · 2357 阅读 · 0 评论 -
CPU的流水线指令设计
为什么小小一个CPU,有那么多周期(Cycle)?程序的性能,是由三个因素相乘来衡量的,“指令数×CPI×时钟周期”。和周期相关的只有一个时钟周期,即CPU主频的倒数。一个CPU的时钟周期可以认为是可以完成一条最简单的计算机指令的时间。那为何构造CPU时,有那么多周期?单指令周期处理器一条CPU指令的执行,由FDE三步组成。这个执行过程,至少需花费一个时钟周期。因为在取指令的时候,我们需要通过时钟周期的信号,来决定计数器的自增。很自然,我们希望能确保让这样一整条指令的执行,在一个时钟周期内完成原创 2021-11-27 15:56:46 · 19231 阅读 · 11 评论 -
Linux内核实战(二)-操作系统概述
os就像一个软件外包,内核就相当于这家外包公司老板。接下来请假设你就是这个老板,方便理解os如何协调各种资源帮客户做事。后文中用户指os的用户客户指外包公司的客户1 硬件概述1.1 鼠标和键盘计算机的输入设备。用户想要告诉计算机应该做什么,都是通过这两个设备。一家外包公司如何知道客户需求?需配备销售、售前等角色,专门负责和客户对接,把客户需求拿回来,统称这些人为客户对接员。1.2 屏幕即显示器,计算机的输出设备,将计算机处理用户请求后的结果反馈给客户。显示器上面显示的东西由显卡原创 2021-01-12 19:12:48 · 1126 阅读 · 1 评论 -
2020年秋招最新操作系统之存储管理面试知识点集锦
一、基本概念:地址重定位1.1 需要了解的内容程序装载到内存才可以运行通常,程序可以执行文件格式保存在磁盘上多道程序设计模型允许多个程序同时进入内存每个进程有自己的地址空间一个进程执行时不能访问另一个进程的地址空间进程不能执行不合适的操作1.2 要解决的问题说明:在左边的单处理器系统中,如果一个进程想要运行,那么必须将进程地址空间装载到物理内存中才可以运行。而右边的是多处理器系统中有多个进程需要进入物理内存执行,这里要解决的问题就是,如何将进程地址空间合理的装载到物原创 2020-11-06 00:47:00 · 1765 阅读 · 1 评论 -
操作系统之文件管理
一、文件与文件系统1.1 文件是什么文件是对磁盘的抽象所谓文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。信息项:构成文件内容的基本单位(单个字节,或多个字节),各信息项之间具有顺序关系文件内容的意义:由文件建立者和使用者解释1.2 如何设计一个文件系统这里先看文件管理的需求:从用户角度文件系统是如何呈现在用户面前:* 一个文件的组织如何命名如何保护文件可以实施的操作从操作系统角度:怎样组织、管理文件* 文件的描述、分类原创 2020-09-22 03:05:15 · 5830 阅读 · 4 评论 -
守护进程详解
在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的电脑程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程...原创 2020-02-02 01:48:24 · 2964 阅读 · 0 评论 -
重学操作系统原理系列 - 进程管理
一、进程1.1 多道程序设计允许多个程序同时进入内存并运行,提高CPU的利用率,目的是提高系统效率 a图内存中有四个程序,串行执行,因为这里只有一个程序计数器。 当有了多道程序技术之后就得到了b图,每个程序各自独立的占用一个逻辑程序计数器,达到并发执行效果 从c图中可以看到多个程序是轮流执行的1.2 并发环境与并发程序并发环境指一段时间间隔内,单处理器上有两个或两...原创 2020-02-15 20:16:45 · 15005 阅读 · 1 评论