linux知识点

1.静态库和动态库

2. gcc编译四个阶段:预处理、编译、汇编和链接

    标准I/O提供了三种类型的缓冲,分别是?单缓冲,双缓冲,循环缓冲。
3.Vim的三种模式:命令模式  插入模式   底行模式
“i键”进入编译模式   “ctrl+v”进入可视模式  “ESC:”进入底行模式
    y    ##复制        c    ##剪切      u    ##撤销
    d    ##删除         p    ##粘贴    ctrl+r    ##恢复

4.GDB调试命令:
                 添加断点: break + 行数 (b 也行)
              delete 断点号n:删除第n个断点
              i b 查看断点信息
              list:简记为 l , 查看文件源代码
              run(简写r): 运行程序
              continue(简写c) : 继续执行,到下一个断点停止
              next(简写n) :执行一步    

5.文件的四极空间代表:
    代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。                
    数据段:数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量和全局变量。
    堆(heap):堆是用于存放进程运行中被动态分配的内存段
    栈:栈又称堆栈,栈是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量
6.文件系统四部分:引导块,超级块,索引节点,数据区
    超级块: 用于存放文件的控制信息。
    引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操    作系统;
    超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;    
    inode区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件    系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;    
    数据区:用于存放文件数据或者管理数据。
    c语言中没有明确给定初值的全局变量和静态变量存放在哪儿?未初始化数据区
7.文件创建目录:mkdir()

8.对硬连接和软连接的描述:(简答题)
    硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号。硬连接的作用是允许一个文件拥有多个有效路径名。
    软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在软连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

9.修改文件权限命令:chmod
10.命令行有什么函数提供:shell
11.文件描述符的数据类型:int
12.lseek(fd,位移数,whence):设置文件偏移量
13.复制文件描述符{
        dup(fd)
        dup2(2,3)将2复制给3    
        fcntl()        
    }
14.文件状态值:{
        只读:O_RDONLY
        只写:O_WRONLY
        读写:O_RDWR
        写入时添加至文件末尾:O_APPEND
        不存在时创建:O_CREAT
        截断文件为零长度:O_TRUNC
}
15.编译有线程的文件要加      -lpthread      参数。
16.412编码
17.Linux下获取文件属性函数: stat()
18.更改目录:cd ..    pwd查看当前所在的目录位置   ls查看目录下的文件

19.虚拟文件系统是什么?(简答题)Virtual File System,
    虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文        件系统接口;同时,它也提供了内核中的一个 抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但        依赖 VFS 共存,而且也依靠 VFS 协同工作。

20.linux中主要有哪几种文件?(简答题)
    普通文件、链接文件、管道、套接字、目录文件和设备文件

21.简述系统调用和库函数?(简答题)
    系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。
    系统调用通常用于底层文件访问。
    系统调用发生在内核空间,因此如果在用户空间的一般应用程序中使用系统调用来进行文件操作,会有用户空间        到内核空间切换的开销
    库函数调用是系统无关的,因此可移植性好。
    库函数调用通常用于应用程序中对一般文件的访问。
    由于库函数调用是基于C库的,因此也就不可能用于内核空间的驱动程序中对设备的操作。
使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?
    这是因为,读写文件通常是大量的数据,这时,使用库函数就可以大大减少系统调用的次数。

22.open系统打开的标志:    

进程:

23.查看进程的命令:ps
24.什么是进程?(简答题)
    进程就是一个程序的执行实例,也就是正在执行的程序。在操作系统的眼里,进程就是一个担当分配系统资源的实体。
25.进程的资源有哪俩部分组成?(简答题)
    常驻内存  非常驻内存
26.进程和程序的去吧?(简答题)
    (1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
    (2)程序是静态的观念,进程是动态的观念;
    (3)进程具有并发性,而程序没有;
    (4)进程是竞争计算机资源的基本单位,程序不是。
    (5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序
27.linux进程的结构有哪些?(简答题)
    数据段:存放的是全局变量、常数以及动态数据分配的数据空间。
    代码段:存放的是程序代码的数据。
    堆栈段:存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。
28.fork函数返回值的含义?(简答题)
    返回值,失败,返回-1,linux下系统调用的一半惯例,错误码在errno中
    = 0,子进程
     >0 ,  父进程
29.进程中return 和 exit 的区别?(简答题)
     exit是整个程序的结束。return是某个函数的结束,并返回结果。
     return返回函数值,是关键字;  exit 是一个函数。
     return是C语言提供的,exit是操作系统提供的
      return是函数的退出(返回);exit是进程的退出。
exit和_exit就是用来正常终止一个进程的,主要区别是_exit会立刻进入内核,而exit先执行一些清除工作然后才进入内核。
30.fork和vfork的区别?(简答题)
    fork和vfork都可以用来创建子进程。vfork产生的子进程和父进程共享数据段.。
    fork创建的子进程和父进程的运行的先后顺序是没有保证的
    vfork的特点是保证子进程先运行。只有子进程通过exec或者exit退出后,父进程才能运行.

31.父进程调用wait可能出现三种情况?(简答题)
    父进程的所有子进程都在运行,wait()阻塞。
    父进程没有任何子进程,则立即出错返回。
    有一个子进程已经终止,则取得该子进程的终止状态立即返回。

32.孤儿进程是什么?谁回收?
    父进程消失,子进程仍然存在,那么这个子进程就是孤儿进程。孤儿进程被 init 进程回收。
僵尸进程是什么?谁回收?
    子进程比父进程先结束,而父进程又没有释放子进程占用的资源,此时子进程将成为一个僵尸进程,由父进程回收

33.父进程查询子进程的退出状态可以用wait/waitpid函数
    wait(status)子进程的结束状态值会由参数status 返回
    waitpid(0/-1,&status,0)
-    1表示不等待某个特定PID的子进程而是回收任意一个子进程,0表示默认的方式(阻塞式)来进行等待

34.fcntl函数的功能:1、复制一个已有的描述符,类似于dup函数功能。
        2、获取/设置文件描述符标志。
        3、获取/设置文件状态标志。
        4、获取/设置一步I/O所有权。
        5、获取/设置记录锁。
35.如何创建软连接?
    创建的语法:ln -s是必须的,然后后面跟一个目标文件夹,最后是一个当前目录的软连接名。

36. getpid()获取子进程id          getppid()获取父进程id
      getuid()获取用户id        geteuid()获取有效用户id

37.管道分为有名管道和无名管道。
     列出有名管道和无名管道的区别和特点    ?
有名管道:也称为FIFO管道,是一种文件类型,在文件中可以查看到。
匿名管道在系统中没有实名,不能再文件系统中以任何方式看到该管道,它只是进程的一种资源,会随着进程的结束而被系统清除。
无名管道是无名的,有名管道是有名的;
无名管道只能用于父子进程或兄弟进程之间的通信,而有名管道可用于任意两进程之间通信;
无名管道是无形的,即无名管道的 inode 结构不是在磁盘上存储的,而是临时生成的,而有名管道的 inode 结点在磁盘上。
特点:半双工,只能一端写一端读,数据先进先出,.数据被进程从管道读出后,在管道中该数据就不存在了

38.列出linux的通信方式,简单描述?·
    管道包括三种:普通管道,流管道,命名管道
    信号量:是一个计数器,可以用来控制多个进程对共享资源的访问
    消息队列:是由消息的链表,存放在内核中并由消息队列标识符标识
    信号:是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生
    共享内存:是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问
    套解字:是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信

39.简单介绍信号是什么?
    信号是异步的
     信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动
             信号是因为某些错误条件而产生的,比如内存段冲突、浮点处理器错误或者非法指令等
             信号是在软件层次上对中断的一种模拟,所以通常把它称为是软中断
40.对可靠信号和不可靠信号的处理过程?
    
    
41.简单说明信号的处理方式?
    1、信号忽略:
        忽略此信号,大多数信号都可以采用这种方式进行处理,除了9( SIGKILL )和19(SIGSTOP )信号。
    2、信号捕捉
        进程要通知内核在某种信号产生时,需要调用一个用户函数,在用户函数中,用户可以自己定义信号处            理的方式,在Linux下我们不能捕捉SIGKILL信号和SIGSTOP信号
    3、执行默认动作
        一般情况下是终止该进程

42.产生信号的方式?
    1、来自键盘的信号
    2、硬件异常产生信号
    3、通过系统调用向进程发送信号
    4、由软件条件产生信号

43.简述信号的声明周期?
    信号诞生,信号在进程中注册,信号在进程中注销,信号处理函数执行完毕。

44.进程中不能忽略的两个信号?
    SIGSTOP和SIGKILL

   安装信号signal和sigaction的不同?


45.一个进程是 PCB 结构和数据组合。
46.中断描述?
    中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,    转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序

47.向消息队列发送信号:msgsnd ()    
     接收队列的函数: msgrcv()
     创建消息队列:msgget()
     关闭消息队列:msgctl()

48.谁用于发送定时器?
     alarm   用于设置定时器,当计时时间到达时,向进程发送SIGALRM信号。
49.共享内存,信号量,消息队列

无名管道(有亲戚) 

Q函数的原型

共享内存:
    shmget()函数用来创建共享内存
    shmat()函数 作用就是用来启动对该共享内存的访问,并把共享内存连接到当前进程的地址空间
    shmdt()函数用于将共享内存从当前进程中分离
    shmctl()函数用来控制共享内存

50.什么是线程?特点?

51.线程中取消和结束的区别?

52.线程和进程的关系?

53.线程和进程的区别?
    进程是资源分配的单元,线程是执行行单元
    进程间切换代价大,线程间切换代价小
    进程拥有资源多,线程拥有资源少
    多个线程共享进程的资源   

54.线程的创建函数:pthread_create()
        线程分离状态:.pthread_detach()
        退出线程:pthread_exit() 
        取消线程:Pthread_cancel()

55.互斥锁的两种状态:上锁  解锁

56.对互斥锁的理解?
    互斥锁主要用于实现内核中的互斥访问功能,是一种用于多线程编程中,防止两条线程同时对同一公共资源进行读写的机制。

57.初始化互斥锁函数:pthread_mutex_init ()
    也可以用宏PTHREAD_MUTEX_INTIALIZER 初始化静态分配的互斥锁
     上锁函数:int pthread_mutex_lock()以阻塞的方式申请互斥锁
          int pthread_mutex_trylock()以非阻塞的方式申请互斥锁
     解锁函数:pthread_mutex_unlock()释放操作只能由占有该互斥锁的线程完成。

58.网络编程
   TCP与UDP的区别?
    TCP面向连接,UDP是面向无连接的
    TCP提供可靠的服务,UDP尽最大努力交付,即不保证可靠交付
    TCP传输效率相对较低,UDP传输效率高
     TCP连接只能是点到点、一对一的,UDP支持一对一,一对多,多对一
59.TCP的三次握手?
    第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号
    第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHE)状态,完成三次握手

60.什么是套接字?
    套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程 
    应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字

61.UDP,TCP属于  传输层  协议。

62.面向连接的三个阶段?

63.移动指针lseek函数的参数:    lseek(int fd ,_off_t  offset , int whence)
        第一个参数fd为已经打开的文件,第二个参数offset为根据参考位置,第三个参数whence表示偏移量    64.    OSI的三层模型?   
    第一层:物理层,主要功能是利用物理传输介质为数bai据链路层提供物理连接,以便透明的传送比特流
    第二层:数据链路层,在此层将数据分帧,并处理流控制
    第三层:网络层,本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。                                                             

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值