1.常见指令及权限理解
一.
计算机体系结构:
冯诺依曼体系结构:输入设备,存储器(控制器,运算器)。输出设备。
环境变量:
PATH,HOME,LOGNAME,SHELL,HOSTNAME(环境指令)
echo,export,env,set,unset,readonly(环境变量设置)
Linux文件类型:
普通文件[-],目录文件[d],连接文件[l],设备和设备文件[b],套接字[s],管道文件[p].
概念:超级用户与普通用户,shelle如何运行程序。
二.Linux权限管理:
chmod, chgrp, chown ,umask. sudo
各种指令:
ls, cd, date, cal, touch, mkdir, ps, jobs, ipc, rmdir, cp, mv, basename,
dirname(处理路径,返回父), more, less, head, tall, file.
查找文件:
which,find,whereis,grep
gzip,zcat,tar,pwd,cat ,sort ,uniq ,who, tty, kill,diff.
2.Linux环境搭建
vim编辑器:
vim拥有的模式,vim常用的操作键位,vimrc配置。
gcc,g++,gdb的使用,ctags的使用,Makefile的使用。
3.Linux:进程
进程概念,
进程描述(PCB),
进程标示符(pid,ppid,),
进程位置,环境变量.
进程状态:运行状态,睡眠状态,磁盘休眠状态,死亡状态,僵死状态。
附加(孤儿进程,僵尸进程)。
进程优先级:PRI,NI
进程终止方式:exit,return _exit,_Exit,atexit.
栈帧的内存地址具体存储。
进程标识符:
#include <sys/types.h> #include <unistd.h> pid_t getpid(void); //返回值:调用进程的进程ID pid_t getppid(void); //返回值:调用进程的父进程ID uid_t getuid(void); //返回值:调用进程的实际用户ID uid_t geteuid(void); //返回值:调用进程的有效用户ID gid_t getgid(void); //返回值:调用进程的实际组ID gid_t getegid(void); //返回值:调用进程的有效组ID
实际用户与有效用户:基本概念,gid,uid
进程创建:
#include <unistd.h> pid_t fork(void); pid_t vfork(void);
fork与vfork创建的区别,父子进程的区别。
进程等待:基本概念
#include<sys/types.h> #include<sys/wait.h> pid_t wait(int*status); pid_t waitpid(pid_t pid, int *status, int options);
各项参数,阻塞与非阻塞。
进程程序替换:
#include <unistd.h> int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]);
3.进程间通信
进程间通信的基本实现概念,思想
管道:
#include <unistd.h> int pipe(int filedes[2]);
管道的限制,管道的4种特殊状态。
命名管道:
命令创建:mknod namedpipe
#include <sys/types.h> #include <sys/stat.h> int mknod(const char *path,mode_t mod,dev_t dev); int mkfifo(const char *path,mode_t mode);
XSI IPC(system V)
消息队列:
基本概念,IPC对象数据,消息队列结构
函数:
int msgget(key_t key, int msgflg); ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
msgstru:
struct msgstru{ long mtype; //大于0 char mtext[用户指定大小]; };
int msgctl ( int msgqid, int cmd, struct msqid_ds *buf );
key_t
ftok():
# include <sys/types.h> # include <sys/ipc.h> key_t ftok(const char *pathname, int proj_id);
信号量:
机制,工作原理。
调用程序必须按照下面方式定义这个联合体:
union semun {
int val; // 使用的值
struct semid_ds *buf; // IPC_STAT、IPC_SET 使用缓存区
unsigned short *array; // GETALL,、SETALL 使用的数组
struct seminfo *__buf; // IPC_INFO(Linux特有) 使用缓存区
};
信号量的各种操作函数:
共享内存:
基本函数及概念。
4.线程
线程概念以及线程与进程区别与联系。差异。
线程创建,线程创建相关函数。
线程等待
线程终止
线程分离
线程同步与互斥:mutex互斥量、cindition条件变量、(POSIX版本)信号量
例:生产者与消费者模型、读者写者模型(读写锁),自旋锁
死锁的产生与避免
4.信号
1).信号、信号递达、信号未决概念,信号产生的处理。
2).产生信号:3种方式。
3).信号在内核中的表示以及获取和修改信号集中某个信号(block表、pending表、handler表)。
以及相关的操作函数
4).信号的捕捉,信号的自定义,信号的非原子性操作避免。
5).可重入函数与线程安全
6).竞态条件
7)SIGCHLD.
进程间关系、终端,作业,守护进程。
本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1773584
原文地址:http://memory73.blog.51cto.com/10530560/1773584