首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

xv6(17) 进程三:代码部分

说明退出退出内核时内核栈是空的,为什么会这样呢?这个问题在进程创建的时候解释,避免一会儿说这儿,一会儿讲那儿。...放进 $CR3$ 的页目录地址一定是个物理地址,地址翻译就是要从 $CR3$ 中获取页目录地址,如果这个地址是个虚拟地址,那还得翻译这个地址岂不“无限递归”出错了嘛,所以 $CR3$ 中一定得放物理地址...函数会根据文件 $inode$ 将数据读取到相应位置,有关 $readi$ 函数详见 $inode$ 部分。...oldpgdir = curproc->pgdir; //旧页目录 curproc->pgdir = pgdir; //换新页目录 curproc->sz = sz; //更改程序大小 curproc...里面我们是加载的 $elf$ 文件的可装载段,这里初始化 $initcode$ 程序在编译的时候没有编译成 $elf$ 可执行文件,而是编译成了只有机器码的二进制文件,没有多余的信息,可以直接加载到内存运行

43410

xv6(13) 文件系统:文件描述符&系统调用

分配文件描述符 static int fdalloc(struct file *f) { int fd; struct proc *curproc = myproc(); //当前进程控制块的地址...或 .. goto bad; 每个目录下都有目录项指向当前目录.和父目录 .. ,这两个目录项不应该被擦除掉。...); 创建一个新文件需要在其父目录下填写当前文件的目录项,这样后续路径解析查找文件时该文件才能被找到。...sys_chdir(void) { char *path; struct inode *ip; struct proc *curproc = myproc(); begin_op...文件关闭之后再次打开文件就失败了。测试截图如下: 这说明文件处于打开状态时, $rm/unlink$ 该文件,该文件其实并没有被删除,只是这个文件在其父目录下的目录项被删了,链接数减了 1。

64610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux内核模块详解

    模块是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是其代码可以在运行时链接到系统中作为内核的一部分运行或从内核中取下,从而可以动态扩充内核的功能。...实际上这个程序的功能就是读取/proc文件系统中的文件/proc/modules中的信息。所以这个命令和cat /proc/modules等价。...它的格式就是: # lsmod ksyms 显示内核符号和模块符号表的信息,可以读取/proc/kallsyms文件。...例如,以文件系统的方式为访问系统内核数据的操作提供接口,而且可以用所有一般的文件工具操作。例如我们可以通过命令cat,more或其他文本编辑工具察看proc文件中的信息。...由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc是动态从系统内核读出所需信息并提交的。/proc文件系统一般放在/proc目录下。

    8.3K20

    linux 文件系统那些事儿

    从上图可以看到,目录 inode -> 目录数据块 -> 文件 inode -> 文件/子目录数据块 形成了一个闭环,通过这样不断迭代可以读取到文件系统中的任意文件。...目录项,此时链接计数达到 0 目录打开的进程数为 0 时,删除目录,释放数据块与 inode 目录打开的进程数大于 0 时,延迟释放目录空间,此时在该目录下无法再创建新文件,尝试创建将出错返回 ENOENT...目录项,此时链接计数达到 0 目录打开的进程数为 0 时,删除目录,释放数据块与 inode 目录打开的进程数大于 0 时,延迟释放目录空间,此时在该目录下无法再创建新文件,尝试创建将出错返回 ENOENT...下表罗列了一些与文件时间相关的 tar 选项: 选项 作用 --atime-preserve 压缩时保持文件的 atime 不变 --mtime=DATE-OR-FILE 压缩时设置 mtime 为指定格式或某个文件的...,需要注意以下几点: 使用 lstat 而不是 stat 判断文件属性,以便得到目录的符号链接 当文件是符号链接时,读取并判断指向内容是否为目录,注意这个过程是递归的 最后终于得到如愿以偿的输出了: .

    1.5K10

    NFS - MIPS架构下构建NFS共享目录服务

    Lin 和 Win 共享文件 1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题。...NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样...---- 需求 集群环境下,三台机器A、B、C,没有文件服务器,但是还要访问同一个目录,目录中都是文件,传统的做法是把这些图片分别放到A、B、C。...---- 创建共享目录 [root@localhost rpm]# mkdir -p /home/zf/share ---- 配置文件/etc/exports 编辑/etc 目录下的共享目录配置文件exports...与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。

    1.4K30

    php-安全设置,做好基础安全!

    0x05 防护会话劫持攻击 设置php的session路径,避免放在网站目录。对于session,需要条件及其苛刻,没有足够条件也是无法成功的!...: register_globals = Off 当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,那么就要用$_GET['var']来进行获取,这个php程序员要注意...0x07 上传文件 注意服务器上传目录无执行权限,上传程序的文件后缀过滤。.../proc/environ包含客户端user-agent。 图片包含。 以上三种方法都是先向其内容插入恶意代码,使其包含执行防范:open_basedir限制了目录,防止了1,2的攻击方法。...;auto_prepend_file = “phpids.php” ;auto_append_file = “alert.php” 默认是空,请添加所包含的文件。

    1.3K50

    超详细讲解命令执行漏洞

    漏洞危害 继承Web服务器程序的权限,去执行系统命令或读写文件 反弹shell 控制整个网站,甚至控制整个服务器 漏洞产生的原因 没有对用户输入进行过滤或过滤不严 例如,没有过滤&、&&、|、||等连接符...symlink(): #一般是在linux服务器上使用的,为一个目标建立一个连接,在读取这个链接所连接的文件的内容,并返回内容 getenv #获取一个环境变量的值 putenv($a) #添加$a到服务器环境变量...|”:显示后面语句的执行结果 “||”:当前面的语句执行出错时,执行后面的语句 “&”:如果前面的语句为假,则直接指向后面的语句,前面的语句可真可假 “&&”:如果前面的语句为假则直接出错,也不执行后面的语句...eval(string) # 返回表达式或代码对象的值 execfile(string) # 从一个文件中读取和执行Python脚本 input(string) # Python2.x 中 input...指定这个可执行的文件路径; 这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败

    5.8K42

    MIT 6.S081 Lab Nine --- file system

    # -kernel $K/kernel: 这个选项指定虚拟机启动时使用的内核文件的路径和名称。其中$K是一个变量,代表内核文件所在的目录,kernel是内核文件的名称。...在读取和写入文件时都会调用bmap()。写入时,bmap()会根据需要分配新块以保存文件内容,如果需要,还会分配间接块以保存块地址。 bmap()处理两种类型的块编号。...符号链接(或软链接)是指按路径名链接的文件;当一个符号链接打开时,内核跟随该链接指向引用的文件。符号链接类似于硬链接,但硬链接仅限于指向同一磁盘上的文件,而符号链接可以跨磁盘设备。...这样,即使一个目录项被删除,文件本身仍然存在于文件系统中,只有当所有硬链接和原始文件都被删除后,inode 的数据块才会被释放。...软链接(Symbolic Link)是一种特殊类型的文件,它包含指向另一个文件或目录的路径。

    43031

    优雅的玩PHP多进程

    proc_open (PHP 4 >= 4.3.0, PHP 5, PHP 7) proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。...有效的类型有:pipe (第二个元素可以是: r 向进程传送该管道的读取端,w 向进程传送该管道的写入端), 以及 file(第二个元素为文件名)。...这使得你的脚本可以和其他脚本交互操作。 例如,可以通过指定文件描述符将密码以更加安全的方式 传送至诸如 PGP,GPG 和 openssl 程序, 同时也可以很方便的获取这些程序的状态信息。...pipes 将被置为索引数组, 其中的元素是被执行程序创建的管道对应到 PHP 这一端的文件指针。 cwd 要执行命令的初始工作目录。...但是,由于 Windows 的架构并不将文件描述符和底层句柄进行关联, 所以,子进程无法访问这样的句柄。 标准输入,标准输出和标注错误会按照预期工作。

    55920

    02 . Zabbix配置监控项及聚合图形

    ,但是我们配置文件写的是39.108.140.0,我们让这两个IP一致.点击3进去然后修改. ?...# 监控系统中往往根据被监控的主机角色或其他属性将同类主机划分到同一个主机组中. ? ? ? ? ?...vfs.file.chsum[file] # 如监控/etc/passwd ,/etc/group 文件从而知道是否有新用户创建 vfs.file.md5sum[file...监控网卡流量 我们先创建一个应用集,这样的话之后创建的网卡上传,下载,总流量不会显的很乱,都在一个Network应用集里面,而且能导出成xml文件,放到其他的zabbxi主机上能直接用. ?...这台主机可以装一个nginx,然后上传一张大一点图片到网站根目录,然后访问,再查看网络波动图. 或者我们直接上传一个大点的rpm、tar包到其他主机.这样看着明显 ?

    1.1K50

    PHP命令执行漏洞初探

    passthru() — 执行外部程序并且显示原始输出 proc_open() — 执行一个命令,并且打开用来输入/输出的文件指针。...用于替换的字符串或数组 subject 要进行搜索和替换的字符串或数组 include include $file 在变量$file可控的情况下,我们就可以包含任意文件,从而达到getshell的目的;...由于不同的配置环境和不同的包含文件分为:远程文件包含和本地文件包含 文件操作函数 copy:拷贝文件 file_get_contents:将整个文件读入为一个字符串 file_put_contents...:将一个字符串写入文件 file:把整个文件读入一个数组中 fopen:打开文件或者 URL move_uploaded_file:将上传的文件移动到新位置 readfile:输出文件 rename:重命名一个文件或目录...使用软连接读取文件内容 symlink():一般是在linux服务器上使用的,为一个目标建立一个连接,在读取这个链接所连接的文件的内容,并返回内容 环境变量 getenv:获取一个环境变量的值 putenv

    1.7K20

    关于centos相关命令

    罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息cat /proc/interrupts 显示中断...复制一个目录到当前工作目录cp -a dir1 dir2 复制一个目录ln -s file1 lnk1 创建一个指向文件或目录的软链接ln file1 lnk1 创建一个指向文件或目录的物理链接touch...updatedb' 命令whereis file 显示一个二进制文件、源码或man的位置which file 显示一个二进制文件或可执行文件的完整路径5.查看文件内容cat file1 从第一个字节开始正向查看文件的内容...-n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件(当文件为只读或当磁盘写满时非常有用)mount /dev/fd0 /mnt/floppy 挂载一个软盘mount /dev/cdrom...确认所给的文件由哪个rpm包所提供rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书

    21910

    PHP建议禁用的危险函数

    中配置如下: disable_functions=phpinfo,eval,exec,system,chroot,shell_exec,chown…… 函数名称 函数功能 危险级别 chgrp() 改变文件或目录所属的用户组...高 chown() 改变文件或目录的所有者 高 chroot() 可改变当前PHP进程的工作根目录,仅当系统支持CLI模式时PHP才能工作,且该函数不适用于Windows系统 高 dl() 在PHP运行过程当中...(而非启动时)加载一个PHP外部模块 高 exec() 允许执行一个外部程序(如UNIX Shell或CMD命令等) 高 ini_alter() 时ini_set()函数的一个别名函数,功能与ini_set...高 proc_get_status() 获取使用proc_open()所打开进程的信息 高 proc_open() 执行一个命令并打开文件指针用于读取以及写入 高 putenv() 用于在PHP运行时改变系统字符集环境...建立一个名为link的符号链接 高 system() 允许执行一个外部程序并回显输出,类型于passthru() 高 readlink() 返回符号连接指向的目标文件内容 中 scandir() 列出指定路径中的文件和目录

    1.1K30

    系统编程-文件读写这件小事

    返回值为ssize_t类型,因为它的返回值可以为负,表示出错,有趣的是这样一来使得其能表示的读写字节范围少了近一半。 返回大于0,表示读或写入对应的字节数。对于read,返回0表示到文件结尾。...常见报错 使用不当或者出错的时候会有错误信息,这在编码的时候就需要注意检查。 Bad file descriptor 通常使用了一个并不合法的文件描述符,例如,该文件描述符已经关闭。...No such file or directory 就如字面意思,通常是文件或者目录不存在,也许你使用了O_CREATE标志,但是如果你的目录不存在,文件也无法创建成功。...一个进程打开的文件数量是有限的,具体可以通过: $ ulimit -n 65535 至于当前已经打开了多少,可以这样统计: $ ls -l /proc/`pidof proName`/fd/ |wc -...总结 一些常见错误中很多涉及到网络的读写,这里暂时没有提及。 一般情况,不会用同一个文件描述符对文件进行既读又写,一旦出现这样的场景时,需要注意偏移量的设置。

    63120

    # Linux命令大全

    ,如uid、gid和组文件命令 ls -al 列出文件-包括常规文件和隐藏文件以及它们的权限 tree 以树形结构列出文件,常用参数有:-d查看目录,-L num查看num层文件,-a查看隐藏文件 pwd...显示当前目录文件路径 mkdir 'directory_name' 创建一个新目录 rm file_name 删除一个文件 rm -f filename 强制删除文件 cp file1 file2 将...file_name 输出文件的内容 head file_name 显示文件的前10行 tail file_name 显示文件的最后10行 gpg -c file_name 加密一个文件 gpg file_name.gpg...kill pid 使用给定的pid终止进程 killall proc 杀死/终止所有名为proc的进程 lsof 列出进程打开的文件 # pgrep firefox 查找Firefox进程ID pstree...Ctrl+W 删除光标前的单词 Ctrl+Y 粘贴 Ctrl + W 或 Ctrl + K 删除的内容 Ctrl+D 删除当前光标所在字符 (在没有字符时会关闭终端) Ctrl+B (Left)

    13810

    Linux之rsync数据同步服务

    保持文件属性,符号链接,硬链接,权限,时间等。 安全方式传输,Rsync本身不对数据加密,使用ssh作为传输端口。 指定排除文件,排除无需同步的文件或目录。...进程方式同步,rsync运行在C/S架构,通过进程方式传输文件或数据。...:// [user@]host:[:port]/目录 -a选项 :递归传输目录 :保持文件或目录的时间、文件属性、属组、时间、软链接 :显示同步的过程 :设备 -z选项 :传输时进行压缩以提高效率 -v...=100 限速传输 --exclude-from=file 文件名所在的目录 --exclude=PATTERN 指定排除不需要传输的文件模式 rsync服务部署 环境: 两台主机:源服务器:192.168.56.11...参数的锁文件     secrets file = /etc/rsync.pass //用户认证配置文件,里面保存用户名称和密码,必须手动创建这个文件     [etc_from_client] //自定义同步名称

    1.6K20

    Android系统启动——3init.rc解析

    "开始,直到下一个"on"或者"service"结束,中间所有行都属于这个"块"(section) PS:空行或注释行没有分割作用,注释用'#'开始 无论是“动作(action)”块还是“...services 其实是可执行程序,它们在特定选项的约束下是被init程序运行或者重启(service可以在配置中指定是否需要退出重启,这样当service出现异常crash时就可以有机会复原) service... [ ]:重置文件的安全上下文 restorecon_recursive [ ]*:一般都是selinux完成初始化之后又创建、或者改变的目录 rm...write [ ]*:打开指定的文件,并写入一个或多个字符串。...中,读取其内容,然后保存在content里面, bool okay = android::base::ReadFdToString(fd, content); // 读取完了文件,则要关闭这个文件的描述符

    5K21
    领券