rust中比起C,将更多语法作为表达式处理,如if
unit type
一种只包含一个实例的类型
rust中用来表示返回值为void
empty type
无实例的类型
rust中用来表示不返回
变长类型
这里的变长的理解应该是编译期不能确定,运行期确定后不能改变
如[T]和str 不定长u8串,UTF-8编码
一般以引用形式出现
因为他们的长度编译期不可知,&[T]和&str由指向数组地址和长度两部分组成
同时检查多个文件描述符,看它们是否准备好了执行 I/O 操作(准确地说,是看 I/O系统调用是否可以非阻塞地执行)
也即文件描述符就绪
笨办法(?):非阻塞IO轮询,多进(线)程
IO多路复用,信号驱动
CS110 TODO
Lec9 并发程序输出
线程同步
IPC
通信
同步
信号
fast system call
时间都花在代码执行上,不需要等待外部资源
本地文件读取被认为是fast的
slow system call
花费indefinite时间在等待上
waitpid,accept,read(socket)
使slow变成fast
non-blocking模式
CS110总结
抽象
实现和行为分离
clean易用接口,不需要你了解底层
模块化与分层
文件系统分层
编译器pipeline
网络协议栈
命名和名称解析
给系统资源human-readable名字
文件inode号和文件名
ip和域名
url,pid,fd
缓存
虚拟化
make many resources look like one
raid
afs
load balancer
make one resource look like many
虚拟内存映射
线程(这里说的是进程的栈被瓜分以便多线程使用)
虚拟机
并发
多进程在1处理器,多线程在1进程
信号和中断
C-S请求和应答
责任的清晰划分
system call
HTTP,IMAP,DNS
NFS,AFS
理解信号量
一种事件