计算机基础

如果想进大厂,那就得花大量时间学习基础!

如果想进大厂,那就得花大量时间学习基础知识吧!

  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 数据库原理

记录面试过程中被问到的问题。

操作系统相关

  1. 进程与线程

进程是程序执行的一个实例,是系统进行资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块(PCB)中,以表示该进程拥有这些资源或正在使用他们。

进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。

线程是程序执行的最小单元,是进程中的一个实体,是被系统独立调度和分派的基本单位,与进程不同,线程与资源分配无关,线程自己不拥有系统资源,它属于某一个进程,并与进程内的其他线程一起共享进程的资源,线程只由相关堆栈寄存器和线程控制表TCB组成。

通常在一个进程中可以包含若干个线程,他们可以利用进程所拥有的资源,但是一个线程只属于一个进程,进程间相互独立,同一进程中的各线程共享。某进程内的线程在其他进程不可见。

线程是调度和分配的基本单位,进程时资源拥有的基本单位。

在同一进程中,线程的切换不会引起进程的切换,在由一个进程中的线程切换到另一个进程中的线程时,才会引起进程的切换。

​ 2.可执行程序执行的过程

以linux环境为例。

首先是可执行程序的格式,linux下的格式为 ELF。

当运行一个可执行文件时,首先需要将该文件加载到内存中去。从理论上将,系统会将该文件拷贝到一个虚拟的内存空间段里面去,在拷贝的过程中,可执行程序的格式和进程的地址空间存在映射关系。

image-20210606144009541

在linux下,我们一般是在shell的环境下来运行一个可执行文件。

shell fork出来的子进程执行execve系统调用,执行完系统调用后,shell的子进程就变为了可执行程序。

redis通信协议protocol

上一篇

你真的会用git吗?

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

个人微信公众号

we-tuiguang

qq交流群

群号:1046260719

微信扫一扫

微信扫一扫