UNIX基础知识

一.线程

线程是进程某程序段的一次运行。

  1.线程共享资源,利用共享的资源,线程很容易能够互相通信

    (1)进程代码段:每个线程有各自的寄存器组,在运行时期拷贝给cpu寄存器,来确定运行的是哪段代码段。

    (2)公共数据:堆(指的全局堆,线程自身创建的堆独享),全局变量,静态变量,常量,

    (3)打开文件描述符

    (4)信号处理器,信号处理器是p_thread库提供的对信号处理的系统函数。

    (5)进程id和进程组id

  2.线程独享资源

    (1)栈,自己申请的堆,

    (2)信号屏蔽码:每个线程对不同信号的处理方式不同

    (3)线程id

    (4)错误返回码

    (5)线程优先级:不同的优先级方便线程调度  

    (6)寄存器:每个线程有不同的寄存器以确定线程运行的信息

  3.线程间通信

   (1)锁机制:互斥锁,条件变量,读写锁

      互斥锁以互斥方式防止数据结构被并发修改

      条件变量以原子方式阻塞线程,直到某个特定条件为真为止,对条件的测试是在互斥锁的保护下进行

      读写锁的读操作是可以同步的,写的方式是互斥的

    (2)信号量机制

    (3)信号机制

  3.线程调度:这里

二.进程

进程的概念:进程是程序的一次运行

  1.进程间通信方式:

    (1)无名管道:半双工的通信方式,在具有亲缘关系的进程间使用。

    (2)又名管道:半双工的通信方式,可以在非亲缘关系的进程间使用。

    (3)信号量,是一种锁机制,对共享资源进行互斥访问时用到。

    (4)消息队列:由消息的链表,存放在内核中的消息队列标识符表示,解决了管道只能传递字节流,信号量传输量小的问题

    (5)共享内存,线程能创建和其他线程共享的一段内存

    (6)套接字,优点是可用于不同机器间的通信

    (7)信号:signal,用于通知某个事件已经发生  

   2.fork与vfork

     fork和vfork都是用来创建子进程的函数,对资源的拷贝上不同

       fork:复制资源是全部拷贝,以前的系统会讲资源在fork之后就全部拷贝,但新的拷贝思想是写时拷贝,即开始的时候父子进程的代码段,数据等资源只是虚拟地址不一样,实际上指的是同一个物理地址。当父子进程改变了相应段的内容时,父进程会将该段的复制给子进程。有一个细节问题就是父进程的优先级会低于子进程,这是因为子进程大部分都用于exec。如果父进程在子进程exec之前修改内容会导致不必要的写时复制。

       vfork:父子进程共享数据段,但父进程会阻塞,直到子进程调用了exec或exit,一般来讲vfork创建的子进程用于启动一个新的进程。

三.文件

  1.文件权限

    文件权限一共有七条,分四组

      第一组:文件类型 d,目录文件director

      第二组:u,user,所有者权限,分三种分别是rwx,读,写,执行

      第三组:r,other,其他人的权限,分三种同上

      第四组:g,ground,用户组权限,分三种同上

    改变文件方式:

      chmod 751 a,给a文件的权限为 rwxr-x--x

      chmod u=r,g = x,将user权限改为只读,ground改为只执行

      chmod u+r,g-r,user权限加上读,用户组权限减去读

      chmod a+r给所有用户加上读权限

  2.目录查询的原理

先写个框架,以后再补

  

上一篇:ubuntu 安装 桌面 awesome


下一篇:关于float /double、string类型的hash函数/hash表实现(转)