zoukankan      html  css  js  c++  java
  • unix高级编程阅读

    一.进程: fork,exec,waitpid

      1.子进程:复制进程的代码与堆栈状态,因此子进程将会从刚执行的指令fork位置继续往下执行。

      2.父进程通过waitpid等待子进程完成

    二.线程:

      1.控制线程:执行指令的线程,多个控制线程可以同一时刻执行指令。

      2.线程共享:地址空间,文件描述符,栈,其他(共享数据即非线程函数堆栈内部数据需要同步)

    三.unix函数:

      1.出错返回负值。

    四:

      1.文件描述符:

        不同文件表描述可以对应同一文件表项

        文件描述符是进程相关资源,每个进程都有自己独立的一组文件描述符,例如进程A的文件描述符1和进程B的文件描述符1就没有什么关系,你不可能说是进程A给进程B传个1,进程B就开始使用进程A的文件描述符1了。

      2.文件表项:

        是系统管理维护管理的表,记录了操作文件的偏移,以及文件状态(读,写,异步,同步)。不同文件表项可以指向同个v节点

      3.v节点:

        一些文件操作的函数。

      4.i节点:

        索引信息,从磁盘读文件时候载入的。

      5.参考:http://blog.chinaunix.net/uid-26548237-id-3046664.html

    五:

      1.unix系统调用是原子的吗?

       系统调用有的是原子的,有的不是, 有的是有条件的原子的。比如write就不是原子的。但你write管道,在某个尺寸大小的数据下,就是原子的。

    六:IO

      1.文件的read,write等系统调用,在用户级别没有缓存,在系统级别有缓存,也就是说当调用read或者write的时候,可能是系统缓存中的脏数据。

        参考:

            http://bbs.chinaunix.net/thread-4089435-1-1.html

            http://www.cnblogs.com/hanyan225/archive/2011/08/05/2126619.html

      2.一般unix系统上的标准IO库函数都带有缓存的,是用户级的。

      3.锁:

        

        a.强制锁和建议锁:

          强制锁,是OS内核的文件锁。每个对文件操作时,例如执行open、read、write等操作时,OS内部检测该文件是否被加了强制锁,如果加锁导致这些文件操作失败。也就是内核强制应用程序来遵守游戏规则;

          建议锁又称协同锁。对于这种类型的锁,内核只是提供加减锁以及检测是否加锁的操作,但是不提供锁的控制与协调工作。也就是说,如果应用程序对某个文件进行 操作时,没有检测是否加锁或者无视加锁而直接向文件写入数据,内核是不会加以阻拦控制的。因此,建议锁,不能阻止进程对文件的操作,而只能依赖于大家自觉 的去检测是否加锁然后约束自己的行为;(一般应用于数据库)

          linux是有强制锁的,但是默认不开启.想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对要加锁的文件也需要设置相关权限。

        b.进程,文件,锁:

          锁的目标是文件中的字节段

          同一个进程如果对同文件的同区段进行多次加锁,则最后一次锁取代前面的锁。比如首先加了写锁,然后又加了读锁。现在该进程上的就是读锁。

          进程关闭,则其上所有锁的关闭

          进程中文件描述符关闭,则文件描述符所对应的文件的在进程里面所有锁都关闭。例如,某个进程中有两个文件描述符A和B,指向同个文件,B关闭了。则基于A和B申请的锁都关闭。

       4.异步io:

        a.linux的异步io是事件通知,windows的异步io是完成通知(也就是说io执行由windows内核执行的);

        b.select,poll,epoll(epoll比起前面两种更加快,原因?事件通知时候只需要少量数据),

        c.详情参考:http://www.cnblogs.com/Anker/archive/2013/08/17/3263780.html

         

          

  • 相关阅读:
    WPF应用
    web窗体的运用
    关于计算器的封装
    典型用户、用户故事
    第五次作业
    第四次作业
    四则运算
    git 认识
    First article
    TODO
  • 原文地址:https://www.cnblogs.com/yasmi/p/4968087.html
Copyright © 2011-2022 走看看