CS162 Lecture 4: Fork, Introduction to I/O

pthread

  • pthread library: POSIX thread library
  • POSIX: Portable Operating System Interface(for uniX?)
  • 一个重要的观点是,Every is a “File”

File System

  • File

    • 是文件系统中被命名的数据
    • 可以是文本,二进制数据
    • Metadata是文件的信息,包括size,Modification time,owner security info,access control
  • Directory

    • 包含文件和目录的“文件夹”

I/O and Storage Layers

C High-Level File API - Streams

  • 文件高层次的抽象是输入输出流,流被认为是字节序列

C Low-Level File - File Descriptors

  • Unix I/O的设计理念是

    • 任何东西都是文件
    • 使用前open
    • 以字节为单位
    • 在kernel中的buffer读写
  • 直接使用系统调用实现,而stream是将系统调用read等打包成fread等

  • 从加速操作系统的方面来看,应当尽可能少地使用开销巨大的系统调用,如getpid的user版本比kernel版本快了25倍

Process and File

  • fork后的子进程复制了父进程的文件描述符表

  • 因此当shell fork一个新进程时,标准输入0,标准输出1,标准错误2都会被复制到子进程中,在一个进程中关闭文件只会改变这个进程的文件描述符表

  • dup用于复制文件描述符

  • 在含有多个线程的进程中fork,子进程只会含有一个线程,也就是调用fork的那个进程

CS162 Lecture 4: Fork, Introduction to I/O

http://huaeryi.com/2023/05/17/CS162-Lecture-4/

作者

huayi

发布于

2023-05-17

更新于

2023-05-17

许可协议