绝赞春招拯救计划 -- 操作系统,组成原理,计网

进程和线程

进程

一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程

线程
进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

与进程不同的是同类的多个线程共享进程的方法区资源,但每个线程有自己的程序计数器虚拟机栈本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

进程与线程的区别总结
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。

根本区别进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位

资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

多进程和多线程区别


多进程:操作系统中同时运行的多个程序

多线程:在同一个进程中同时运行的多个任务

举个例子,多线程下载软件,可以同时运行多个线程,但是通过程序运行的结果发现,每一次结果都不一致。 因为多线程存在一个特性:随机性。造成的原因:CPU在瞬间不断切换去处理各个线程而导致的,可以理解成多个线程在抢CPU资源

多线程提高CPU使用率

多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。

进程通信方式

管道:速度慢,容量有限,只有父子进程能通讯

消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

信号量:不能传递复杂消息,只能用来同步

共享内存区:可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中共享内存中数据的更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

套接字(socket):这是一种更为一般的进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

进程的三种状态

原文链接:操作系统:进程与线程之间的区别及联系 - 知乎 (zhihu.com)

就绪(Ready)状态:当进程分配到除CPU以外的必要资源后,只要再获得CPU,便可以立即执行,进程这时的状态为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。

阻塞(Blocked)状态:正在执行的进程由于发生某事件或接受某消息无法继续执行时,便放弃处理机而处于暂停状态,也即进程的执行收到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态和封锁状态。通常使进程处于阻塞的原因有:请求I/O,申请缓冲空间。也会产生一个相应的阻塞队列。

运行(Running)状态:进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态,在多处理机系统中,则有多个进程处于执行状态;

以下内容来在 ChatGPT

操作系统

1. **进程与线程:**
   - 进程是程序在执行过程中的一个实例,拥有独立的内存空间和资源。
   - 线程是进程中的执行单元,共享进程的地址空间和资源,但拥有独立的栈空间。
   - 进程间通信常用的方式包括共享内存、消息队列、信号量等。
   - 线程间通信可以通过共享内存、互斥锁、条件变量等实现。

2. **内存管理:**
   - 虚拟内存是操作系统为每个进程提供的抽象概念,使得每个进程都拥有独立的地址空间。
   - 分页和分段是常见的内存管理方式,分页以固定大小的页为单位划分内存,而分段则以逻辑上相关的模块为单位划分内存。
   - 内存分配算法包括首次适应、最佳适应和最坏适应等,而内存释放可以通过显式释放或自动回收机制实现。

3. **文件系统:**
   - 文件系统是操作系统用于组织和管理存储设备上文件的机制,常见的文件系统包括FAT、NTFS、EXT等。
   - 文件系统通过文件控制块(FCB)管理文件的元数据信息,包括文件名、大小、权限等。
   - 文件操作可以分为打开、读取、写入、关闭等步骤,而文件权限管理包括读、写、执行等权限。

4. **进程间通信:**
   - 管道是一种单向通信机制,常用于父子进程间通信。
   - 消息队列是一种通过消息传递进行进程间通信的方式,允许进程通过队列发送和接收消息。
   - 共享内存是一种高效的进程间通信方式,允许多个进程共享同一块内存区域。

5. **死锁与并发控制:**
   - 死锁是指两个或多个进程在执行过程中由于竞争资源而造成的一种互相等待的现象。
   - 死锁预防包括破坏死锁产生的条件,如资源互斥、不可剥夺、循环等。
   - 死锁避免通过资源分配图、银行家算法等方式避免系统进入死锁状态。

6. **CPU调度算法:**
   - FCFS(先来先服务)按照进程到达的先后顺序进行调度,简单但可能导致作业等待时间过长。
   - SJF(最短作业优先)选择执行时间最短的进程优先执行,但可能导致长作业饥饿。
   - RR(轮转调度)按照时间片轮转的方式进行调度,适用于时间片相对较短的场景。

7. **I/O管理:**
   - 阻塞式I/O会使得进程在进行I/O操作时处于阻塞状态,直到操作完成。
   - 非阻塞式I/O允许进程在进行I/O操作时立即返回,不会等待操作完成。
   - 同步I/O要求进程在进行I/O操作时等待操作完成,而异步I/O则允许进程在进行I/O操作时继续执行其他任务。

8. **异常与中断:**
   - 异常是指程序执行过程中遇到的一些非正常情况,如除零、缺页等。
   - 中断是一种由硬件或软件引起的突发事件,可以打断正在执行的程序。
   - 异常处理和中断处理都需要操作系统提供相应的异常处理程序和中断处理程序来处理异常和中断事件。

计算机组成原理

当你面试计算机组成原理的岗位时,以下是一些常见的问题和相应的答案:

1. **什么是计算机组成原理?**
   - 计算机组成原理是研究计算机硬件系统构成和工作原理的学科,涉及到计算机的各个组成部分及其相互关系,包括CPU、存储器、输入输出设备等。

2. **请解释计算机的五大基本组成部分。**
   - CPU(中央处理器):负责执行指令和处理数据。
   - 存储器:用于存储数据和指令。
   - 输入设备:接受用户输入的数据。
   - 输出设备:向用户展示处理结果的设备。
   - 总线:连接各个部件,传输数据和控制信号。

3. **请解释冯·诺依曼体系结构。**
   - 冯·诺依曼体系结构是一种计算机结构,包括存储器、算术逻辑单元、控制单元、输入设备和输出设备等五大部分,其特点是程序和数据存储在同一存储器中,按照顺序执行。

4. **什么是指令周期?**
   - 指令周期是计算机执行一条指令所需的时间,包括取指、译码、执行、访存等阶段。

5. **请解释指令流水线。**
   - 指令流水线是一种提高CPU性能的技术,将指令的执行过程分解为多个阶段,使得多条指令可以同时执行不同阶段,从而提高了CPU的吞吐量。

6. **什么是存储器层次结构?**
   - 存储器层次结构是一种存储器组织方式,包括高速缓存、主存和辅助存储器,层次结构中存储器的速度和容量逐级递减,但成本逐级递增。

7. **请解释什么是指令集架构(ISA)?**
   - 指令集架构是CPU与软件之间的接口规范,定义了CPU支持的指令集合、指令的格式和功能,对软件开发具有重要意义。

8. **请解释什么是并行处理?**
   - 并行处理是一种利用多个处理单元同时执行任务的技术,包括指令级并行、数据级并行和任务级并行等。

9. **什么是时钟频率?**
   - 时钟频率是CPU内部时钟发生器产生的脉冲信号的频率,通常以赫兹(Hz)表示,代表了CPU的运行速度。

10. **请解释什么是寄存器?**
    - 寄存器是CPU内部的存储单元,用于临时存储指令、数据和地址等信息,包括通用寄存器、专用寄存器等。

11. **什么是ALU?**
    - ALU(算术逻辑单元)是CPU的一个组成部分,负责执行算术和逻辑运算,包括加法、减法、与、或等操作。

12. **请解释什么是微指令和宏指令?**
    - 微指令是CPU内部控制逻辑的一种指令,用于控制CPU内部各个部件的工作;宏指令是一种高级指令,由多条微指令组成,用于完成复杂的操作。

计算机网络

当面试官询问TCP和UDP的区别时,你可以这样回答:

TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议,它们在网络通信中扮演着不同的角色和提供不同的特性。下面是它们的区别:

1. **连接性:**
   - TCP是一种面向连接的协议,通信前需要在客户端和服务器之间建立连接,然后进行数据传输,保证数据的可靠性和顺序性。
   - UDP是一种无连接的协议,通信时无需建立连接,数据包直接发送到目标地址,不保证数据的可靠性和顺序性。

2. **可靠性:**
   - TCP提供可靠的数据传输,通过序列号、确认应答和重传机制来确保数据的可靠性,丢失的数据会被重新传输。
   - UDP不提供可靠的数据传输,数据包可能会丢失或乱序,不保证数据的完整性和顺序性。

3. **传输效率:**
   - TCP的可靠性和流量控制机制会增加额外的开销,可能导致传输效率较低。
   - UDP不对数据进行任何额外处理,因此传输效率较高,适合对传输延迟要求较高的应用场景。

4. **应用场景:**
   - TCP适用于要求数据传输可靠、顺序和完整的应用,如网页浏览、文件下载、电子邮件等。
   - UDP适用于对实时性要求较高、数据量较小、传输延迟敏感的应用,如音视频流媒体、在线游戏等。

总的来说,TCP和UDP在应用场景和特性上有所区别,根据具体的需求和情况选择合适的协议可以更好地满足通信需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值