码迷,mamicode.com
首页 > 系统相关 > 详细

Linux:前期总结

时间:2016-05-15 20:02:02      阅读:329      评论:0      收藏:0      [点我收藏+]

标签:运行程序   计算机   export   控制器   touch   

 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

Linux:前期总结

标签:运行程序   计算机   export   控制器   touch   

原文地址:http://memory73.blog.51cto.com/10530560/1773584

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!