zoukankan      html  css  js  c++  java
  • 《深入Linux内核》 UNIX的一些故事

    Unix文件的类型
    1.普通文件
    2.目录
    3.符号链接
    4.面向块的设备文件
    5.面向字符的设备文件
    6.管道和命名管道
    7.套接字

    点评:不明觉厉

    打开文件
    进程只能访问“打开的”文件。为了打开一个文件,进程调用
    fd = open(path,flag,mode)
    path表示被打开的文件的路径。
    flag表示打开的方式,它也指定是否应当创建一个不存在的文件。
    mode指定新创建文件的访问权限。

    关闭文件
    当进程无需再访问文件的内容时,就调用系统调用:
    res = close(fd)

    更名及删除文件
    要重新命名或删除一个文件时,进程不需要打开它。这样的操作并没有对这个文件的内容起作用,而是对一个或多个目录的内容起作用。
    res = rename(oldpath,newpath)
    改变了文件链接的名字,而系统调用:
    res = unlink(pathname)
    减少了文件的链接数,删除了相应的目录项。只有当链接数为0时,文件才被真正删除。

    虚拟内存的优点
    若干个进程可以并发地执行。
    应用程序所需内存大于可用物理内存时也可以运行。
    程序只有部分代码装入内存时进程可以执行它。
    允许每个进程访问可用物理内存的子集。
    进程可以共享库函数或程序的一个单独内存映像。
    程序可以编写与机器无关的代码,因为他们不必关心有关物理内存的组织结构。


    进程虚拟地址空间处理
    内核分配给进程的虚拟地址空间由以下内存区组成:
    程序的可执行代码
    程序的初始化数据
    程序的未初始化数据
    初始程序栈
    共享库的可执行代码和数据
    堆(由程序动态请求的内存)


    设备驱动程序
    通过特定的接口,每个驱动程序与内核中的其余部分相互作用
    优点如下:
    可以把特定设备的代码封装在特定的模块中。
    厂商可以在不了解内核源码而只知道接口规范的情况下,就能增加新的设备。
    内核以统一的方式对待所有的设备,并且通过相同的接口访问这些设备。
    可以把设备驱动程序写成模块,并动态地把它们装进内核而不需要重新启动系统。不再需要时,亦可以动态地卸下模块。

    小结:

    通过阅读,感觉系统内部的奥秘蛮好玩的,能够更深刻的认识linux系统的原理,以及windows系统。都是相通的!!!由表及里的研究!!!

  • 相关阅读:
    java插入语句中有单引号的处理
    mybatis批量插入
    用Resttemple从数据接口中取出数据
    java1.8Stream流式算法
    rabbitmq启动命令
    【MySQL】Mysql模糊查询like提速优化
    Mybatis基础知识点:trim标签的使用
    java8 array、list操作 汇【20】)- (FlatMap)用法汇总
    编写一个定制的收集器
    mysql
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3182814.html
Copyright © 2011-2022 走看看