Skip to content

Week1: 计算机系统漫游 #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
OhBonsai opened this issue Sep 15, 2020 · 0 comments
Open

Week1: 计算机系统漫游 #1

OhBonsai opened this issue Sep 15, 2020 · 0 comments
Labels
CSAPP 深入理解计算机系统

Comments

@OhBonsai
Copy link
Owner

OhBonsai commented Sep 15, 2020

面试问题

进程和线程

image
当问到这个问题的时候,最标准的回答是进程是操作系统资源分配的基本单元,线程是操作系统调度的基本单元。这句话没错,但是忽略了这句话是以操作系统的角度去回答的,而不是以程序员(user space去回答的),linux的用户线程是对操作系统不可见。我觉得以进程操作系统为了管理好资源而进行的抽象逻辑设计为角度去回答这个问题,至少让我觉得很不错。如果我被问到进程是什么我会这么回答:
首先当一个可执行文件被放在磁盘上,然后被读到内存,程序的堆栈都分配好了,接下去就是程序从main0开始不断的执行指令。有一些操作是移动数据的操作,从内存移到寄存器,有一些操作是计算寄存器值的指令,还有一些是控制程序流动的指令。程序的执行用到了cpu,内存,存储可能还有io设备。但是程序作为一个软件他是无法直接操作硬件的,中间有一层是操作系统。而操作系统为了更好表示程序进行时这样一个状态,抽象了一个叫做进程的逻辑概念。(反问一下您知道还有哪些虚拟概念吗?一般人肯定一下子反应不过来的😄,一次面试多来几次这种压制行为,很容易剥削面试官)同样的逻辑概念包括文件,这是对IO的抽象,只有input,output。同时还有虚拟内存,虚拟内存是对主存和io设备的抽象概念。最后就是进程,进程就是操作系统为了更好分配CPU/主存/IO设备而抽象出来的概念。 所以才有了操作系统课里面经典的那句话,进程是操作系统资源分配的基本单元

@OhBonsai OhBonsai added the CSAPP 深入理解计算机系统 label Sep 15, 2020
@OhBonsai OhBonsai pinned this issue Sep 15, 2020
@OhBonsai OhBonsai unpinned this issue Sep 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CSAPP 深入理解计算机系统
Projects
None yet
Development

No branches or pull requests

1 participant