Centos下部分专有名词解释

1)什么是文件?

        文件=内容数据+属性数据,所谓的属性就是文件大小,修改时间,文件名等等啊。所以你建立一个空文件实际上也要占空间的,因为文件属性也是数据,也占空间,不然你怎么就知道他就是空文件,ls-l能看到属性。在Linux下一个文件以.开头,那么这个文件就是隐藏文件,隐藏文件,顾名思义正常情况下你是看不见的,ls-a可以看见。ls -i用来查看文件的inode编号,相当于身份证识别号一样。

2)什么是外壳程序?

        外壳程序在windows下就是图形化界面,在Linux下就叫做指令。搞个外壳程序不外乎两点,操作系统一般人熟悉不了,没有外壳程序帮助下使用成本太高,另外一点就是人直接和操作系统接触会对操作系统造成意想不到的损坏,因为是人就一定会犯错误。shell如果说人话,就是命令行解释器,建议忘掉这个解释,越解释越复杂。echo $BASH表示查看自己的外壳程序,实际上外壳程序就是一个文件,不信ls一下echo $BASH出来的结果,发现不是目录,说明就是一个文件。echo $BASH出来的结果是/bin/bash,说明外壳程序是bash,bash是一个文件,实际上bash是一个死循环文件,可以理解成while死循环文件,像Linux中的提示符[root@VM-12-11-opencloudos ~]就是bash提供的,可以理解为是while循环中的scanf函数的提示符,每次提示完然后你输入程序,至于结果bash会交给其他子进程处理,并不是bash自己处理。bash和shell有什么区别呢,shell是外壳程序的统称,即shell是外壳程序这个行业的统称,basn是外壳程序这个统称中的具体一员,shell是统称,bash是具体

3)什么是权限?

        一件事情是否允许被你“做”就叫做权限。权限是针对人的,权限还与事务的基本属性有关,例如机械手表天然就不可能用来打王者荣耀,你再怎么给 在机械手表上打王者荣耀的权限 也没有用,因为机械手表天生就没有能打王者荣耀这一属性。所以权限的核心=人+事物属性        

4)进入一个目录需要什么权限?(x权限) ;一个目录的rw权限限制了目录什么呢?(r能让你读目录下的文件(目录)列表,w能让你在目录下创建文件(目录)、删除文件(目录))

        一个文件你如果是所有者又是所属组,那么只看你的所有者权限。一个文件如果你只是所用者或所属组,那么只看所用者或所属组的权限。因为权限只会被认证一次,首先判定你是谁,如果一旦判定了你是谁,那么就以这个身份去验证你的权限,哪怕你同时也是所属组我也不看了,这叫权限只被认证一次    

5)什么是粘滞位?(只能给目录设置,只能给other设置)

        当多个用户共享一个目录,需要在该目录下进行读写,创建删除文件,但是只能自己删除自己的,而不能删除别人的(w:可以互删的,但是不满足条件)。你在你自己的目录下创建一个文件,这个文件除了你自己谁都读不了,这一点毛病也没有,但是如果别人有你这个目录的写权限,那么别人就可以把你这个除了你自己谁都读不了文件给删除了。打个简单的比方就是2个人住在一个出租屋内。虽然我进不来你的房间,但是我可以把你房间给拆了,这是可以被理解的。粘滞位可以避免这种情况。

6)什么是IDE?

        IDE叫集成开发环境,就是把所有的东西都塞在一起。集成就是大锅烩。集成开发环境就是把所有东西都放在一起,我们用所有的软件时都能在它上面找到对应的解决方案

7)什么是动态库?静态库?

        将库中我要的方法的地址,填入我的可执行程序中,建立关联叫动态库。将库中方法的实现,真的拷贝到我们的可执行程序中叫静态库。一个程序在Lunix下一般是动态链接,可以用:ldd mytest、file mytest这种查看到,但如果要改为静态链接那要怎么处理呢,gcc mytest.c -o mytest -static表示用gcc对mytest.c进行编译,然后用-o将文件送到mytest中,其中使用静态链接,-static表示使用静态链接。Linux下.so(动态库) .a(静态库)。windows下.dll(动态库).lib(静态库)

        因为有库的存在,我们才可以通过头文件找到函数的申明,在库中找函数的实现,然后把我的代码和库中的代码以某种方式关联(即链接)起来才写成了一个可执行程序,一般链接的过程有两种方式,一种是动态链接-需要动态库,一种是静态链接-需要静态库。写代码时我们依赖头文件(头文件提供C语言的函数列表,即函数的申明,库提供C语言的函数实现),即使代码写完了,形成了可执行程序,这个时候可执行程序也需依赖库。如:ldd mytest表示查看可执行程序mytest所依赖的库文件。file mytest表示查看可执行程序mytest是多少位的,动态链接什么的。vim /usr/include/stdio.h可以看看stdio.h文件。ls /usr/include可以看看include下包含了哪些文件。ls /lib64/能看到Linux系统中的大部分动静态库。

8)什么是缓冲区?

        就是C语言给我们提供的一段内存空间,显示器设备,一般的刷新策略是行刷新,说人话,即显示器碰到\n,就把\n之前的所有的字符全部给我显示出来。

9)为什么printf("hello word\n");sleep(1);看到的是先执行printf("hello word\n");后执行sleep(1);而printf("hello word");sleep(1);看到的是先执行sleep(1);后执行printf("hello word");?

        因为printf打印的数据会先放在缓冲区里,由显示器定期刷新拿走,具体来说,显示器碰到\n后刷新拿走,显示器设备,一般的刷新策略是行刷新,说人话,即显示器碰到\n,就把\n之前的所有的字符全部给我显示出来。因为printf没有\n所示printf执行后结果序放在缓冲区了此时显示器没有拿走,而sleep执行我们看到了,等到程序快结束了,这时赶紧把printf的内容显示上了。要想赶紧刷新,可用fflush()

10)回车与换行是一回事吗?

        换行(\n)是光标在什么位置另起一行,此时光标在上一次光标的正下方,回车(\r)是回到这一行的最开始。所以一般我们另起一行顶格是指回车换行。

11)什么是使能?

        使能是让它能够还是不能。比如一个断点不想把它取消掉,但是又让这个断点不起效果,那么把这个断点禁用就可以,禁用断点就是把这个断点的使能关掉了,没禁用这个断点就是这个断点的使能是开的。

12)什么叫做当前路径?

        当你执行一个可执行文件时,你是从某一个路径下执行这个可执行文件把它加载到内存中去的,这个路径就叫做可执行程序路径(如可执行程序a,那么可执行程序路径为/A/B/a),可执行程序的上一级路径就叫做cwd(即上例中的/A/B),即进程当前工作路径,当你打开一个文件时,如果没有指定路径,那么默认打开的是进程当前工作路径,一般上也叫当前路径。

13)进程中fork()之后为什么会有两个返回值?两个返回值意味着一个变量保存两个值吗?fork()之后父进程与子进程谁先执行完谁后执行完能确定吗?

14)为什么Linux下有个程序运行的时候加了printf()是S+状态,注释掉printf()就是R状态?

        printf()是打印到显示器设备,显示器是外设,通常情况下是需要等待的即阻塞状态S,而等待后进行运行状态,运行状态R的时间是远远小于S的,这就导致Linux在显示状态的时候有很大几率是命中S。之所以写S+而不是S是因为S+中的+表示的是前台进程,即前台使用时命令行解释器是不能再使用了,若想在后台使用,只需在可执行文件后面加上&即可,如./test &,要想去掉这个进程,只需要kill -9 再加上进程PID号即可。

15)运行状态D、T、X、Z的区别

        S:中断睡眠。可以被叫醒,本质上是阻塞

        D:磁盘睡眠也叫深度睡眠。不可以被中断,说人话就是不可以被叫醒。本质上也是阻塞。
       T:暂停状态。资源很充足,它就在一直不停的打字,只是你把它叫停了,T只是单纯的暂停。主要用于调试。
        X:终止状态。是为了表达我这个进程可以被回收了,是为了让操作系统看到,随后操作系统来回收,因为不可能你一终止我操作系统马上就来回收,识别没那么快,其次系统里进程也很多,事实上还是批量回收的,但一旦回收开始,这个过程很快。
        Z:僵尸状态。一个进程已经退出但是还不允许被操作系统释放,还处于被检测的状态称为僵尸状态。一般是父进程或操作系统来关注这个进程退出正不正常,所以才有这个不允许退出的时间段。

16)什么是孤儿进程?

        孤儿进程:父进程先退出子进程还在,子进程就被称为孤儿进程。事实上这时候的孤儿进程最终会被1号进程,即init进程领养,当然也是由init进程回收,因为领养进程就是为了回收。

17)并行与并发的区别?

        并行是多个进程在多个CPU下分别同时运行;并发是多个进程在一个CPU下进行运行,通常采用时间片的形式进行切换来进行运行。

18)什么是抢占与出让?

        抢占与出让:抢占指有更高优先级的进程过来,此刻赶下来正在运行的低优先级,这就叫抢占,出让就是有的进程正在运行,但是它自己想得开,就是从CPU上下来了让别的进程运行,这叫出让。

        如果进程A正在被运行,那么CPU的寄存器里面,一定保存的是进程A的临时数据。当进程A暂时被切下来的时候,需要进程A顺便带走自己的上下文数据,带走的目的:就是为了下次回来的时候能恢复上去,就能按照之前的逻辑继续向后运行,就如同没有被中断过一样。CPU内的寄存器是有一份,但是上下文本身可以有多份,分别对应不同的进程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值