xv6 lec1 Introduction and Examples

1.1 课程内容简介

  • 操作系统的共同目标有:
    • 硬件抽象,把CPU,内存等抽象为进程,文件系统等
    • 同时运行多个程序,multiplex也是操作系统的一个功能
    • 因为需要运行多个程序,隔离性也是操作系统的一个重要特性
    • 程序之间需要协作,所以os要实现共享
    • 当然,当不想要共享的时候,os需要提供security
    • os虽然需要自己运行,但是其不应该阻止其他应用程序获得高性能
    • os必须支持大量不同类型的应用程序,也就是需要支持大量不同的用户场景

1.2 操作系统结构

  • os的用户空间运行着很多程序,比如vi,cc,sh等
  • 除了用户空间程序,还有一个特殊的程序总是在运行,它就是kernel。kernel在计算机打开的时候,第一个被启动。kernel会维护管理用户空间进程的数据结构;还会维护管理硬件的数据结构;还有内置服务,比如文件系统,进程管理。
  • 进程管理是指每一个用户空间的的程序被称为进程,每个进程都有自己的内存与CPU时间。kernel会帮助管理进程的内存与复用内存,划分内存。
  • 文件系统主要就是,管理文件内容;根据独立的命名空间(也就是文件名,层级目录),去找到文件在磁盘中的位置。
  • kernel还可以做到Access Control
  • 用户态程序通过系统调用来访问kernel

1.3 Why Hard and Interesting

  • os需要满足高效与易用;要提供简单,但功能强大的接口,这两者是矛盾的
  • os需要提供应用程序更多的灵活性,但又要保证安全性,这两者是矛盾的

1.4 课程结构和资源

1.5 read, write, exit系统调用

1.6 open系统调用

  • 每个进程都维护了一个独立的文件描述符空间(kernel会为每一个进程保存一个表单,表单中的key就文件描述符,这个表单让内核知道,每个文件描述符的实际内容是什么),所以即使两个进程打开了同一个文件,它们的文件描述符也会不一样

1.7 Shell

  • 在shell中运行ls,shell进程会通过fork创建一个进程在执行exec来运行ls

1.9 exec, wait系统调用

  • exec系统调用会保存当前程序的文件描述符表单
  • exec系统调用不会返回,是因为其加载了镜像文件,并返回到了文件的执行入口从sys_exec返回到用户态之后,就是去执行exec装载的镜像文件了所以exec不会返回原来的进程
  • wait系统调用会等待之前创建的子进程退出
  • 父进程的wait的参数与子进程的exit的参数,可以用来实现进程间通信
  • wait系统调用会返回等待到的子进程的进程号

1.10 I/O Redirect

  • I/O redirect的一般方法是shell fork新的进程,将文件描述符1(文件描述符1通常使用来输出的)改为你想要重定向的文件,在运行之类,子进程的输出就会被改变,而父进程不会改变
  • fork 与 exec分离的好处是可以在fork与exec之间修改文件描述符
posted @ 2022-04-12 21:11  抿了抿嘴丶  阅读(38)  评论(0编辑  收藏  举报