操作系统
文章平均质量分 93
Danny_idea
热爱技术,热爱生活,一步一个脚印。
更多宝贵知识记录可以关注个人公众号:Idea的技术分享
展开
-
计算机原理探险系列(九)CPU调度机制
前边有一篇文章中我有提及到过关于操作系统内部的上下文切换部分,以及一些进程和线程的设计模型。今天这篇文章将会从CPU如何分配资源给到不同的进程使用的角度出发。为什么会有CPU调度当我们的进程或者线程发生切换的时候需要将当前的上下文信息保存到pcb或者tcb中,同时读取下一个进程/线程的上下文。而此时cpu需要从就绪队列中挑选一个合适的进程/线程作为cpu将要运行的下一个单位。那么如何合理地选择下一个执行目标则成为了一个衡量cpu调度是否高效的关键。我们清楚一个进程的状态是存在开启,就绪,执行中,原创 2021-08-08 19:58:21 · 760 阅读 · 0 评论 -
计算机原理探险系列(十)信号量和管程的一些理解
在os的内部,不同的进程之间其实还是会有互相交互的实时运作,这些实时运作的调度会影响系统内部某些资源数据的共享问题。什么场景下os的执行会有数据共享问题例如a进程访问了x001这块内存区域做了些许修改,然后cpu分片给了b进程继续执行,接下来b进程也对这块内存区域做了修改,这会导致一些共享的内存区域中的数据发生变化。不好确保接下来的a进程继续访问内存区域的时候不受影响。即然并行有这么多风险,为什么还要使用并行计算这种模式呢并行计算的优势在于:共享资源多个不同的任务共用相同的内存资源,可以减少原创 2021-08-08 19:47:44 · 377 阅读 · 0 评论 -
计算机原理探险系列(八)继续探索,进程和线程
前段时间整理了一整个系列关于计算机原理相关的内容点,感觉还是蛮有意思的。后边歇了一段时间,现在继续回顾这个专题,希望后续自己能够继续坚持维护下去。之前的文章中有提及过什么是进程,既可以说进程是程序运行的一个表现,也可以说它是CPU分配虚拟内存空间的一个基本单元。之前还提及过如果在操作系统中频繁地做进程之间的切换,其实是一个非常消耗资源的行为。因为不同进程之间的数据保存在不同的PCB中,当切换到新的进程的时候,需要将原先进程的PCB数据保存,然后重新加载新的PCB中的数据。进程在执行的时候,CPU的一些原创 2021-06-04 22:03:40 · 233 阅读 · 1 评论 -
计算机原理探险系列(二)-- 网络传输
各位亲爱的读者们大家好,在上一篇文章中我们着重对计算机底层对cpu原理进行了相关分析,那么这篇文章中我们主要会对计算机模块对网络进行一次深入挖掘。什么是TCP简单来说就是一种面向连接的稳定,可靠的协议。实战理解先从一段实战操作来看连接:nc指令的安装:(可以用于建立连接)yum install -y nc从一台linux服务器上发起一次和百度的连接: nc www.baidu.com 80然后新起一个会话窗口,查看连接的详情:这里面你会看到nc指令正在和百度建立连接,这就是一次t原创 2021-05-05 10:31:43 · 570 阅读 · 0 评论 -
计算机原理探险系列(六)-- 看图认识内存分配
之前的几篇文章里面,我们相应介绍了计算机内部的进程,磁盘,cpu,网络等相关知识点,今天主要来一起探讨下关于计算机的内存分配问题。有限的物理内存计算机在运行的时候,其所拥有的内存空间其实是有限的。在早期的Dos操作系统中,通常就是4mb的内存,那时候的应用软件还不怎么流行,基本4mb的内存空间就足够程序运作了。不过到了后期阶段,随着各种硬件设备的不断完善,往往可能会存在内存空间小于程序的大小。(例如:内存空间4mb,程序大小16mb)解决思路设计一个虚拟存储器,将需要用到指定程序加载到内存中进行计算原创 2021-05-05 10:17:10 · 3278 阅读 · 9 评论 -
计算机原理探险系列(五)-- 磁盘存储探秘OS中的进程
什么是进程以下几种说法我感觉都是正确的理解:1.进程是一个动态执行的过程,是CPU分配虚拟内存空间的基本单位。2.进程包含了程序,是程序执行的一种表现,二者之间呈现多对多的一种关系。进程包含了什么包含的内容非常丰富:1.执行的程序代码2.程序代码运行时候产生的临时变量3.指令执行的地址信息4.系统资源信息,例如正在打开的文件简单一句话就是进程包含了一个程序在运行时候所需要的所有资源信息。程序和进程的关系程序是进程的一个基础,计算机执行的所有功能都是基于进程为单位进行的,但是进程内部真原创 2021-04-23 19:01:28 · 246 阅读 · 0 评论 -
计算机原理探险系列(四)-- 磁盘存储探秘
各位读者朋友们大家好,今天我们一起来聊聊关于计算机底层磁盘的读取原理。磁盘的基本布局磁盘的基本结构主要包含有以下几点,磁盘盘片,读写磁盘的指针,传动轴,主轴等。每次用户程序从用户态发送一条指令给到操作系统内核,进行io读取数据的时候,cpu的ring3级别内核便会通过io总线发送一个指令给到读写磁头,然后由读写磁头定位到盘片的指定位置进行数据读写。最后再通过io总线将数据返回给到用户态的程序中。下边是一张磁盘盘面的大致结构图:在磁盘的盘面上通常会布有许多层的磁道,可以理解为图中的同心圆,然后每原创 2021-04-23 18:55:53 · 481 阅读 · 0 评论 -
计算机原理探险系列(三)-- TCP数据传输
上一篇文章中我们讲到了关于网络传输数据方面到内容,今天我们来深入了解下网络传输数据过程中可能会存在到问题。数据包正常到一次网络请求中,都会以数据包作为传输单位来判断。如果数据包到体积过大,那么就需要进行拆解。tcp数据包信息基本结构如下:包含了网络数据到发送端口,目标端口,ack,seq,还有一些和滑动窗口相关的数据信息。mss值mss值是一个缩写,全称是max segment size,主要是控制每次数据传输中的最大传输大小。每次进行数据包传输的时候,如果数据包大小超过了tcp里面限制的ms原创 2021-03-27 17:42:56 · 375 阅读 · 0 评论 -
计算机原理探险系列(一)CPU
cpu制作短视频链接:https://www.bilibili.com/video/BV1tr4y1K7Bs?from=search&seid=12992058713602054171CPU的制作过程晶圆切片如果问及CPU的原料是什么,大家都会轻而易举的给出答案—是硅。这是不假,但硅又来自哪里呢?其实就是那些最不起眼的沙子。不过不是随便抓一把沙子就可以做原料的,一定要精挑细选,从中提取出最最纯净的硅原料才行。为了能够保证硅原料在后续加工的步骤中能够成型,所以人们会将硅原料放入一个石英容器原创 2021-03-12 14:29:22 · 880 阅读 · 0 评论 -
linux里面常用的查看文本小技巧
日常开发中,我们经常需要在服务器上边进行各种日志的查看操作,本文主要对常用的日志查看技巧进行了一番总结和归纳,方便大家收藏起来后续查看使用:1.tail命令查看日志信息实时监控日志:tail -f filename实时监控10行日志信息:tail -10f filename查看日志尾部的最后100行日志信息:tail -n 100 filename查看日志100行之后的日志信...原创 2019-08-13 23:55:53 · 450 阅读 · 0 评论 -
深入理解JAVA的IO模型
通俗易懂的来讲,个人比较喜欢把io理解成对于文件中的数据进行读取或者修改的一种途径。关于io的那些具体代码该如何编写,本文不打算进行具体展示,因为代码案例很多在网上一搜就有,所以直接忽略。(作为程序员,基本的搜索能力还是要有的)个人对于io的认识每次读取数据都开启一个通道,然后用一个载体去读取文件里面的内容,然后将文件里面的数据运输回到程序里面。那么载体的种类可能为字节,...原创 2019-04-13 18:05:28 · 401 阅读 · 1 评论 -
VMware安装Centos7超详细过程(图文) 转载
原文:https://www.jianshu.com/p/ce08cdbc4ddb?utm_source=tuicool&utm_medium=referral本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下1.软硬件准备软件:推荐使用VMwear,我用的是VMwear 12镜像:CentOS7 ,如果没有镜像可以...转载 2019-01-08 08:47:53 · 261 阅读 · 0 评论 -
Centos7底下安装jdk8
首先需要将jdk1.8 (linux)版本的下载安装在相应的centos里面:我个人习惯是安装在opt目录底下:可以用相应的软件将jdk传输到centos服务器上边,然后进行解压操作即可。然后便是进入/etc/profile目录底下进行相应的配置安装。主要安装的内容还是java_home变量,然后在通过export指令在原有的PATH变量基础上添加上java_home变量信息。退出v...原创 2018-11-18 22:57:19 · 203 阅读 · 0 评论 -
JVM系列--Hotspot虚拟机的内存布局
关于java内存区域部分的堆,栈,方法区三个部分而言,我总结了一下大概为一下这张图。 以下是我第一次初学堆,栈,方法区的一些心得,如有不足,希望各位大佬们指点一下 栈(Stack):1.为什么栈要用来存储基本变量信息和对象引用java虚拟机的基本架构就是采用栈来进行设计的。当一个程序需要运行的时候,由于要预先内存空间和运行的生命周期,所以需要进行指针的变动,来进行内存大小的分配。是...原创 2018-07-20 18:57:22 · 13348 阅读 · 8 评论 -
线程和进程的区别
线程的划分尺度要比进程小,一个进程里面可能会包含有多个线程,当多个线程并发运行的时候可以提高程序的运行效率(多个线程一起共享内存)。但是在操作系统里面,线程是不会被单独划分出来独立地占用一个资源空间的。每一个线程都会有一个属于自己的入口,执行顺序,出口。线程不能够单独地存在,它们都是要依靠其他的程序块通过相应的方法来进行调用的,这也是线程和进程的重要区别。对于进程而言,就可以理解为是很多个线程的集合原创 2017-06-28 14:51:18 · 348 阅读 · 0 评论