一、基础知识

1、linux操作系统,熟悉常用的指令。

2、vim编译器的使用,Makefile的编写。

3、用户以及权限方面相关的知识。

4、linux下环境变量的概念。

二、进程概念相关

1、进程的概念,了解PCB的概念,以及task_struct结构体。

2、进程的创建,fork()与vfork()的区别和联系。

3、进程的等待,waitpid()与wait(),阻塞等待与非阻塞等待。

4、进程的程序替换,execl(),execlp(),execle(),execv(),execvp(),execvlp()。

5、进程的终止,退出码的概念,低八位(异常信号量),次低八位(正常退出码)

三、进程间通信(symtem-V)

1、内核缓冲区与用户缓冲区的概念。

2、文件描述符与文件指针的概念。

3、命名管道与匿名管道(实现父子进程匿名管道的通信和两个进程间命名管道通信)

匿名管道(pipe)的特点(以文件流的模式,生命周期和进程相关联,只能支持有血缘关系的进程间单向通信),命名管道(环形buff)(fifo,mkfifo,mkmod)的特点(可以使不同进程间进行通信)。

4、消息队列(实现两个进程client和server的相互发消息)

msgget(),ftok(),msgctl(),msgrcv(),msgsnd(),消息队列的特点(基于消息面向数据包的通信方式,生命周期和内核关联,双向通信)。

5、信号量(实现一个父子进程的通信)

首先了解临界资源和临界区的概念,信号量是原子操作下实现的,system-v版本下的信号量没有传输数据只用于控制,senbuf结构体,semun联合,

semset(),semctl(),semop()的操作。

6、共享内存(实现两个进程client和server的相互发消息

特点(最高效的通信方式,需要自己维护同步与互斥)。shmget(),shmctl(),shmat(),shmdt()。

四、线程的概念(posix标准)

1、线程与进程的区别与联系。

2、线程的创建,pthread_create()。

  线程的等待,pthread_join()阻塞方式等待。

  线程的返回,线程内部return,使用pthread_exit()退出某个线程,使用       pthread_cancel()取消某个线程。

  线程的分离,pthread_decth() 分离后的线程会自己管理自己的资源进程,不用   阻塞式等待。

3、线程的同步与互斥

  1>互斥量:线程的互斥。

   pthread_mutex_lock(),pthread_mutex_unlock(),pthread_mutex_destory()

  2>生产者消费者模型,死锁的概念,死锁产生的4个必要条件,使用条件变量和

   互斥量实现一个生产者消费者模型。

  3>posix版本信号量sem,单位为信号量区别于system_v版本下信号量集。        sem_init(),sem_wait(),sem_post()(环形数组buff下实现多生产者多消费者    模型)。

  4>读写锁,读写优先的问题。

五、linux信号

1、kill-l普通信号1-31,实时信号34-64。

2、信号的产生方式,键盘,软硬件,kill(),alarm(),abort(),raise()等。

3、信号的处理方式,忽略,执行默认动作,执行自定义动作。

4、信号未决和信号递达。task_struct中pending,block,handler表。

5、信号集sigset_t,信号处理函数 sigemptyset(),sigaddset(),sigpromask(),

  sigpending()。(屏蔽2号信号输出当前pending集,解除屏)

6、信号的捕捉,signal(),sigaction()。(模拟sleep)

7、信号的处理流程,用户态与内核态切换的场景。

六、作业控制与守护进程

1、进程组,shell下的作业控制,会话的概念。

2、控制终端(tty,pts,pty),init下的7个启动模式,用户登录的流程,作业控制,fg命令,bg%命令。

3、守护进程的概念,crond系统进程的编写,setsid(),守护进程的创建。



阅读书籍,深入理解计算机系统,unix高级环境编程