操作系统
杨博东的博客
阿里云数据库-NoSQL组,开源贡献者,Valkey Contributor,Jackey Maintainer。
展开
-
按下计算机电源键的一刻发生了什么(1)?
我一直很好奇我们按下计算机电源键的一刻,计算机内部到底发生了什么,听说那里面是一个二进制的世界,但是为什么计算机本身又是这样的绚丽缤纷,引人入胜……在我们计算机的内部,如果把它比喻为一块果园,有桃树,梨树,苹果树等等,那我们的主板就算是土地,因为它扮演的是一个平台的作用.不论cpu,各种芯片,存储器等都是在它上面的.原创 2015-10-03 20:51:49 · 2122 阅读 · 0 评论 -
Linux 守护进程原理及实例(Redis、Nginx)
1. 什么是守护进程守护进程daemon,是指没有控制终端,运行在后台的进程,通常伴随着系统启动产生,系统关机结束。可以使用命令ps -axj查看系统的守护进程,输出如下所示: 父ID PID 组ID 会话ID 终端 状态 用户ID 命令 PPID PID PGID SID TTY TPGID STAT UID TIME CO原创 2017-11-28 01:12:09 · 6065 阅读 · 2 评论 -
glibc memcpy() 源码浅谈
其实我本来只是想搞懂为什么memcpy()函数的参数类型是void *的:我以为会在memcpy()源码中能找到答案,其实并没有,void *只是在传递参数的时候起了作用,可以让memcpy()接受不同的指针类型,比如char *,double *,struct stu *等等,没错,只是这样,至于memcpy()内部的工作原理,请继续往下看。没办法,我只好去找找memcpy的源码。代码如下。 备原创 2016-11-19 09:35:04 · 6208 阅读 · 7 评论 -
Hello World之编译链接装载与执行(1)
一:前言我打算写一系列博客来说说我对Hello World在计算机中的生命旅程的理解,我是一名软件工程专业的大三学生,有关这个问题我主要的参考书有《深入理解计算机系统》、《现代操作系统》、《程序员的自我修养》,除了这些,我还参考了一些大牛的博客,如果后面需要,我会贴出来,我还在我的Centos 7系统上做了一些验证。如果上面的三本书你都看过,并且看的还算认真,能回答这个问题 https://www.原创 2016-11-30 23:00:33 · 1288 阅读 · 3 评论 -
Linux 文件系统
这篇博客我想解决两个问题: 1:linux下皆文件,为什么?怎么解释这个问题? 2:touch file 命令执行过程究竟发生了什么。到具体的磁盘上它是怎样运作的? 带着这两个问题,我们继续往下走。相信我解释清楚文件系统之后,大家对这两个问题都会有自己的理解。什么是文件系统文件系统是对物理存储介质上数据和元数据的组织方式。物理存储介质:磁盘,U盘等。数据:文件本身的数据。原创 2016-04-11 22:28:24 · 3563 阅读 · 1 评论 -
Linux下软链接与硬链接的区别
由于下面会说到inode,所以如果没有了解过,请务必搞懂inode的真正含义,厚颜无耻的推荐我的一篇博客: Linux磁盘与文件系统管理 如果我们在系统中新建一个文件,我们看到的文件名实际上只是表面现象,本质上会分配一个inode给我们用,inode记录的信息有:文件的block位置,文件的UID,文件的GID,文件的读写执行权限等等,下面我们新建立一个名为file的文件。 实际上file在我们原创 2016-03-17 19:23:41 · 1584 阅读 · 1 评论 -
Linux磁盘与文件系统管理
1:简单说说磁盘以及分区的构成,我们知道,磁盘由盘面,磁头,磁臂构成,假设磁盘盘面上只有一层,我们将盘面一圈圈的划分,然后以原点为中心,连一条线出去,某个圈上被截出来的部分就是扇区,整个一个圈就是一个柱面,我们经常说的分区其实就是以柱面为单位的,0磁道1扇区(一个扇区一般情况下为512字节)的MBR记录了操作系统内核文件的位置,占446字节,然后分区表占用66字节. Linux的Ext文件系统 i原创 2015-11-25 10:48:56 · 912 阅读 · 0 评论 -
Linux文件与目录管理 cp od chattr lsattr
1:在shell脚本中,一定要使用绝对路径。 2:在根目录下,.和..是完全相同的两个目录。 3:cd - 就相当于撤销,表示回到前面状态所在的目录。 4:mkdir -m 700 test 加”-m”参数可以指定权限。 5:将某个目录(比如/home)加入PATH中我们可以:PATH = “$PATH”:/home 6:有时我们ls的时候,会看到在目录后面会加上一些* = | 等,他们表原创 2015-11-25 10:46:33 · 571 阅读 · 0 评论 -
按下计算机电源键的一刻发生了什么(2)?
上一篇博客按下计算机电源键的一刻发生了什么(1)?我们说到开始加载linux内核文件,系统开始正式启动,回顾一下都大体经历了哪几个步骤: 1:通电之后BIOS从CMOS读取硬件参数信息,接着BIOS自检,找到我们设置的启动盘。 2:开始读取启动盘“0“磁道“1“扇区的MBR信息,执行boot loader程序。 3:根据boot loader找到我们内核文件的位置,开始加载内核文件原创 2015-10-11 21:34:09 · 948 阅读 · 0 评论 -
CSAPP学习笔记(第一,二章)
1:文本文件指的是ASCII码文件,二进制文件指的是除文本文件以外,其他文件。 2:区分数据对象的唯一判别方法是数据的上下文。 3:描述一下一个hello.c文件的处理过程。首先hello.c文件我们叫做源代码,经过预处理 gcc -E hello.c -o hello.i 处理一些宏,#define的预定义等,我们可以在hello.i的最底部找到我们helloworld的简单几行代码,编译之后原创 2015-11-08 21:52:53 · 620 阅读 · 0 评论 -
CSAPP学习笔记(异常控制流1)
1:诸如子进程结束之后父进程需要被告知,有时候应用程序需要系统调用,内核通过上下文切换将控制从一个进程切换到另一个进程,还有一个进程发送信号到另一个进程时接收者转而到它的信号处理函数去执行等等,我们的操作系统,甚至硬件无时无刻不在发生“突变”,我们把这种突变叫做异常控制流。即ECF(Exceptional Control Flow),它发生在计算机系统的各个层次。 2:为什么要理解异常控制流:原创 2015-11-08 21:53:58 · 652 阅读 · 0 评论 -
说线程
其实要我说线程,我是不知道说什么的,我不能清晰的说出线程的历史,只是大致了解过(从LinuxThreads 到 NPTL和NGPT之争);我也不知道线程在内核层面是具体怎样的形态,只是知道内核是不会区分线程和进程的,而且线程和进程一样也是task_struct结构体,而且会以线程组的形式存在(主线程即进程就是组长);我也不能算一个入门的多线程服务端编程的c++程序员,因为一个是对c++所知甚少,还有原创 2016-08-09 00:51:43 · 1432 阅读 · 3 评论