notes

进程和线程的区别是什么?

进程和线程主要有以下区别:

**资源分配方面**

- 进程是资源分配的基本单位。进程拥有独立的内存空间,包括代码段、数据段、堆栈段等,还拥有系统分配的其他资源,如文件描述符、网络端口等。
 - 线程是进程内的执行单元,它共享所属进程的资源,如内存空间、文件描述符等,线程只拥有少量在运行中必不可少的资源,如程序计数器、寄存器集合和栈空间等。

**调度方面**

 - 进程的切换开销较大,因为涉及到整个地址空间的切换以及资源的重新分配等操作。
 - 线程的切换开销相对较小,因为线程共享进程的资源,只需要保存和恢复少量的寄存器和栈信息。

**并发性方面**

 - 多个进程之间可以并发执行,不同进程的执行相对独立。
 - 一个进程中的多个线程也可以并发执行,且线程之间可以更方便地共享数据,实现更紧密的协作。

**独立性方面**

 - 进程之间相互独立,一个进程的崩溃通常不会直接影响其他进程。
 - 线程的独立性相对较弱,一个线程的崩溃可能会导致整个进程崩溃,因为它们共享进程的资源。




操作系统的调度是进程还是线程?

操作系统的调度既可以是进程调度也可以是线程调度,具体如下:

**进程调度**

- **基本单位**:在传统的操作系统中,进程是资源分配和调度的基本单位。
 - **调度场景**:当系统中有多个进程处于就绪状态时,操作系统的进程调度程序根据一定的调度算法(如先来先服务、短作业优先、时间片轮转等),从就绪队列中选择一个进程,将 CPU 分配给它,使其占用 CPU 运行。例如,在单核系统中,不同的应用程序(每个应用程序作为一个进程)按照调度算法轮流在 CPU 上执行。

**线程调度**

 - **基本单位**:在现代操作系统中,由于线程的轻量级特性,线程成为了调度的基本单位。
 - **调度场景**:在多线程环境下,一个进程可以包含多个线程,这些线程共享进程的资源。线程调度程序负责决定哪个线程在 CPU 上运行。例如,在一个文本编辑软件中,一个线程可能负责接收用户的输入,另一个线程负责实时保存用户的编辑内容,线程调度程序会根据线程的优先级、等待时间等因素来调度这些线程在 CPU 上执行。

操作系统的调度可以在进程和线程两个层面进行。进程调度主要关注不同进程之间对 CPU 的分配,而线程调度则更注重在一个进程内部的多个线程之间合理分配 CPU 资源,以提高系统的并发性能和资源利用率。


http和https的区别是什么?

HTTP(超文本传输协议)和 HTTPS(超文本传输安全协议)主要有以下区别:

**一、安全性**
1. 加密方式
   - **HTTP**:以明文方式发送内容,不提供任何方式的数据加密。这意味着在传输过程中,数据可以被任何能够截获网络通信的人读取,包括用户名、密码、信用卡号等敏感信息。
   - **HTTPS**:通过 SSL/TLS 协议进行加密通信。在客户端和服务器之间建立加密连接,确保数据在传输过程中是加密的,即使被截获也难以被破解。例如,在进行网上银行交易或购物时,使用 HTTPS 可以保护用户的财务信息不被窃取。
2. 证书认证
   - **HTTP**:无需证书认证。
   - **HTTPS**:服务器需要向权威的证书颁发机构(CA)申请数字证书,以证明其身份的合法性。客户端在连接服务器时,会验证服务器的数字证书是否有效。如果证书无效或存在问题,客户端可能会发出警告或拒绝连接。例如,当访问一个使用自签名证书的 HTTPS 网站时,浏览器通常会显示警告信息,提醒用户该证书可能不可信。

**二、连接方式**
1. 端口号
   - **HTTP**:默认使用 80 端口。
   - **HTTPS**:默认使用 443 端口。
2. 连接建立过程
   - **HTTP**:连接建立相对简单,客户端向服务器发送请求,服务器响应请求,完成一次通信过程。
   - **HTTPS**:在建立连接之前,需要进行额外的 SSL/TLS 握手过程。这个过程包括客户端和服务器之间的一系列消息交换,用于协商加密算法、交换密钥等,以建立安全的连接。握手过程相对复杂,会增加一定的连接建立时间。

**三、性能**
1. 传输效率
   - **HTTP**:由于没有加密和证书验证等额外开销,传输效率相对较高。
   - **HTTPS**:由于加密和证书验证等操作,会消耗一定的计算资源和时间,传输效率相对较低。特别是在处理大量并发连接时,HTTPS 可能会对服务器性能造成一定的压力。
2. 缓存支持
   - **HTTP**:可以被浏览器和代理服务器缓存,以提高访问速度。
   - **HTTPS**:由于加密的原因,缓存相对复杂,一些缓存策略可能不适用,缓存效果不如 HTTP。

**四、适用场景**
1. 一般网站
   - **HTTP**:适用于对安全性要求不高的场景,如一些公开的信息网站、博客等。
   - **HTTPS**:适用于对安全性要求较高的场景,如电子商务网站、网上银行、企业内部管理系统等,以保护用户的隐私和数据安全。
2. 内部网络
   - **HTTP**:在内部网络中,如果安全性要求不高,可以使用 HTTP 进行快速通信。
   - **HTTPS**:如果内部网络中有敏感数据传输,也可以考虑使用 HTTPS 来确保安全。

https中的s是指什么?

HTTPS 中的“S”代表“Secure(安全)”。

HTTPS 是在 HTTP 的基础上通过传输层安全(TLS)或安全套接层(SSL)进行加密来实现安全通信。它确保了在客户端和服务器之间传输的数据是加密的,防止数据被窃听、篡改或伪造。

具体来说,HTTPS 通过以下方式实现安全:
1. 加密:使用对称加密和非对称加密相结合的方式对数据进行加密,保证数据在传输过程中的机密性。
2. 认证:通过数字证书对服务器进行身份认证,确保客户端连接的是真实可靠的服务器。
3. 完整性校验:使用消息认证码等技术确保数据在传输过程中没有被篡改。


tcp和udp有什么区别?

TCP(传输控制协议)和UDP(用户数据报协议)主要有以下区别:

1. 连接性:

• TCP:是面向连接的协议。通信双方在正式传输数据之前,需要通过“三次握手”建立连接,在数据传输完成后,还需要通过“四次挥手”断开连接。这种连接的建立和维护确保了数据传输的可靠性和顺序性,但也带来了一定的连接建立和断开的开销。

• UDP:是无连接的协议。发送数据之前不需要建立连接,直接将数据包发送出去。接收方从网络中接收数据,并从消息队列中读取数据段。这种方式简单快捷,减少了连接建立和断开的时间消耗,但数据的传输可能是不可靠的,也不保证数据的顺序。

2. 可靠性:

• TCP:提供可靠的传输服务。它通过确认、重传、拥塞控制等机制来确保数据的准确性和完整性。例如,发送方发送数据后,会等待接收方的确认消息,如果在一定时间内没有收到确认,就会重新发送数据。

• UDP:不提供可靠的传输服务。发送方将数据报发送出去后,不会关心数据是否到达接收方,也不会进行确认或重传。因此,UDP可能会出现数据丢失、重复或乱序的情况,但在一些对实时性要求较高、对数据准确性要求相对较低的场景中,UDP的这种特性是可以接受的。

3. 传输效率:

• TCP:由于需要进行连接建立、确认、重传等操作,并且要维护连接状态和进行拥塞控制等,传输效率相对较低。尤其是在传输大量小数据时,这些额外的开销会影响传输速度。

• UDP:没有连接建立和维护的过程,也没有确认和重传机制,因此传输效率相对较高。它适用于实时性要求高、数据量较小的场景,能够快速地发送数据。

4. 报文首部大小:

• TCP:报文首部有20个字节,另外如果有选项字段,头部长度会更长。这些额外的头部信息用于连接建立、确认、控制等功能,增加了数据传输的头部开销。

• UDP:报头包括4个字段,每个字段占用2个字节,共8个字节,头部开销较小。

5. 数据处理方式:

• TCP:是面向字节流的协议。它将应用层交下来的数据看成无结构的字节流来发送,可以将数据分割成多个报文段进行传输,并在接收方重新装配。这种方式可以灵活地处理不同大小和类型的数据,但也增加了数据处理的复杂性。

• UDP:是面向报文的协议。对应用层交下来的报文,不合并、不拆分,只是在其上面加上首部后就交给网络层。接收方接到数据后直接去除首部,交给应用层。每个UDP报文都有明确的边界,一次发送一个报文,处理相对简单。

6. 传输方式:

• TCP:通常是一对一的传输方式,即一个发送方对应一个接收方。虽然在某些情况下可以通过一些技术实现一对多的通信,但这种方式相对复杂。

• UDP:支持一对一、一对多、多对一和多对多的交互通信。例如,在广播和多播场景中,UDP可以将数据发送给多个接收方,具有较高的灵活性。

7. 应用场景:

• TCP:适用于对数据可靠性要求高、传输数据量大的场景,如文件传输、电子邮件、网页浏览等。

• UDP:适合用于实时性要求高、传输数据量小、可靠性要求不高的场景,如在线游戏、视频直播、语音通话等。



端口范围?

TCP 和 UDP 的端口范围都是 0 - 65535。根据其使用特点和惯例,通常分为以下三种类型:

1. 周知端口(知名端口):范围是 0 - 1023。这些端口被分配给最重要、最常用的服务,由互联网号码分配机构(IANA)进行统一管理和分配。例如,HTTP 服务的默认端口是 80,FTP 服务的默认端口是 21,SSH 服务的默认端口是 22 等。

2. 注册端口:范围是 1024 - 49151。这些端口是公司和其他用户向互联网名称与数字地址分配机构(ICANN)登记的端口号,供一些特定的应用程序或服务使用。比如,MySQL 数据库的默认端口 3306 就属于注册端口。

3. 私有端口(动态端口):范围是 49152 - 65535。这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号,被保留给客户端进程选择暂时使用。也就是说,当客户端程序启动时,操作系统会从这个范围内随机分配一个端口用来和服务器通信,当客户端进程关闭后,下次打开时又会重新分配一个新的端口。













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值