SOP风格教程
SOP(Standard Operating Procedure)即标准操作流程,意味着将复杂任务拆解为明确的步骤
硬件视角的计算机
C视角下程序内部的状态:全局变量,stack frame们(注意每个栈帧有自己的pc)
状态迁移:执行指令,响应中断,输入输出
执行指令(纯计算的)可以改变程序内部的状态,发出系统调用(中断)才能改变外部的状态
有用的prompt
我现在在[],如果你是一个专业人士,你有什么更好的方法和建议吗,尽可能全面
BIOS
basic i/o system
启动后常驻系统,提供输入输出服务
严格来说是firmware(cpu reset后执行的第一个软件)
booting
引导
bootstrapping的简写,“通过自力更生出人头地”
描述了从firmware开始,直到拉起操作系统的初始化过程
unix
Unix操作系统=unix内核+工具
GNU/Linux=linux内核+GNU项目的工具
fork
创建一个新的状态机,程序内部状态完全复制,外部状态(即操作系统维护的状态)各自处理
exec
复位内部状态,外部状态不变
C库在启动时初始化FILE* stdin, stdout, stderr,很显然
everything is a file对高速设备不够友好
shift,CR&LF,tab&backspace和打字机的渊源
pty
teletypewriter是双向的,有一个键盘可以输入,有一个屏幕可以输出
一对虚拟设备,或者说应该像管道那样理解,但是双向
master由终端模拟器使用,写口的用户输入指令通向slave的读口,读口接受来自slave的输出用来打印给用户
slave由shell使用,一般见到的/dev/pts/0,/dev/pty就是它
终端属性控制
Canonical Mode按行处理
Non-canonical Mode: 按字符处理,如vim的交互式程序
回显、信号处理、特殊字符等
?这里的终端可能指的是pty的master以及可能的其他的
ctrl c这种会被操作系统处理
stty -a
观察按键绑定
进程组是一组相关的进程,可以一次性向它们发送信号
shell中运行程序会为程序创建新进程组(这样可以确定前台进程到底是哪些),而fork默认不创建新进程组
ctrl+c,ctrl+z向前台进程组
session,controling terminal
SIGHUP和nohup
不同shell对命令的处理可能不同
所以需要写shebang
systemcall是abi,而libc是api
apt代理
raspbian - How can i configure a http proxy for apt-get? - Stack Overflow
/etc/apt/apt.conf.d/10proxy
Acquire::http::Proxy "http://yourproxyaddress:proxyport/";