回顾linux系统编程学习过程
2016-05-12 22:13
281 查看
一、基础知识
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高级环境编程
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1772842
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高级环境编程
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1772842
相关文章推荐
- vm11 安装的centos7采用NAT模式联网
- linux 重定向 1>&2 2>&1的各种变形理解
- Linux线程中pthread_join和pthread_detach函数
- linux 脚本学习 一
- 统计多台linux主机的CPU内存swap的使用比例
- [原创]关于在CentOS 7.0 下 安装nfs ,遇见 Transaction check error问题的解决
- Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
- centos6.7、centos6.5下yum方式搭建lnmp环境,php5.4/mysql5.5
- centos下安装jdk1.7
- 监控和管理Linux进程(新手求指教)
- 使用linux系统函数和c++03类写的一个简单线程池
- Linux学习之初期计划(初稿)
- CentOS硬软链接
- 编译Linux/Android 输出很多信息很难找到错误/警告信息怎么办?
- Linux编程常用
- linux相关
- Linux基础之:curl工具的使用
- Linux 设备驱动框架
- Linux监控cpu以及内存使用情况之top命令
- CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解