linux知识点:01

1.内核分为:进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 四个子系统。
2.用户态切换到内核态的 3 种方式:a. 系统调用 b. 异常c. 外围设备的中断 。整除除以0 ,肯定会中断,所以会进入内核.
3.malloc与free是标准库函数,new/delete是运算符;new、delete返回的是所分配类型变量(对象)的指针,malloc、free返回的是void指针。
4.clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间、有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等等。
5.fork() 函数复制时将父进程的所以资源都通过复制数据结构进行了复制,然后传递给子进程,所以 fork() 函数不带参数; clone() 函数则是将部分父进程的资源的数据结构进行复制,复制哪些资源是可选择的,这个可以通过参数设定,所以 clone() 函数带参数,没有复制的资源可以通过指针共享给子进程 。
6.僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。
7.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
8.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程将会导致资源浪费,而孤儿则不会。
9.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。
10.软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(和windows下的快捷方式类似)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系。
11.硬链接就是一个文件的一个或多个文件名。说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。一个文件有几个文件名(用ln命令实现多个文件名),我们就说该文件的链接数为几。由定义可知,此链接数可以是1, 这表明该文件只有一个文件名。总之,硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了。
12.setuid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。因此当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户仍然是普通用户。
13.几种进程间的通信方式: 管道( pipe ),有名管道 (named pipe) ,消息队列( message queue ) ,信号 ( sinal ) ,共享内存( shared memory ) ,套接字( socket ) ,信号量( semophore ) 。
14.临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待,有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用。

你可能感兴趣的:(内核,硬链接,setuid,孤儿进程)