切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
操作系统基本原理
作者:ych
#### 进程、线程、协程的区别 基本概念: >进程: 进程是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统资源分配和独立运行的最小单位; 线程: 线程是进程的一个执行单元,是任务调度和系统执行的最小单位; 协程: 协程是一种用户态的轻量级线程,协程的调度完全由用户控制。 进程与线程区别: >1、根本区别: 进程是操作系统资源分配和独立运行的最小单位;线程是任务调度和系统执行的最小单位。 2、地址空间区别: 每个进程都有独立的地址空间,一个进程崩溃不影响其它进程;一个进程中的多个线程共享该 进程的地址空间,一个线程的非法操作会使整个进程崩溃。 3、上下文切换开销区别: 每个进程有独立的代码和数据空间,进程之间上下文切换开销较大;线程组共享代码和数据空间,线程之间切换的开销较小。 协程与线程的区别: >1、根本区别: 协程是用户态的轻量级线程,不受内核调度;线程是任务调度和系统执行的最小单位,需要内核调度。 2、运行机制区别: 线程和进程是同步机制,而协程是异步机制。 3、上下文切换开销区别: 线程运行状态切换及上下文切换需要内核调度,会消耗系统资源;而协程完全由程序控制,状态切换及上下文切换不需要内核参与。 #### 进程间常用的通信方式 [csdn](https://blog.csdn.net/GMLGDJ/article/details/124627224 "csdn") #### 5种网络IO模型 在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO(blocking IO)、非阻塞IO(nonblocking IO)、多路复用IO(IO multiplexing)、信号驱动IO(signal driven IO)以及异步IO(asynchronous IO)。 [csdn](https://blog.csdn.net/weixin_41085114/article/details/114583431 "csdn") #### 并发与并行的区别 并发和并行的区别为:意思不同、侧重不同、处理不同。 一、意思不同 >1、并发:并发是指两个或多个事件在同一时间间隔发生。 2、并行:并行是指两个或者多个事件在同一时刻发生。 二、侧重不同 >1、并发:并发侧重于在同一实体上。 2、并行:并行侧重于在不同实体上。 三、处理不同 >1、并发:并发在一台处理器上“同时”处理多个任务。 2、并行:并行在多台处理器上同时处理多个任务。 #### 同步与异步的区别 同步是客户端发送请求给服务端,等待服务端响应的请求时,客户端不做其他的事情。异步是客户端发送请求给服务端,等待服务端响应时,客户端可以做其他的事情。 #### 阻塞与非阻塞的区别 阻塞与非阻塞 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 #### 常见缓存淘汰算法 FIFO(First In First Out)先入先出算法 淘汰最先进来的页面。 ARC(Adjustable Replacement Cache)自适应缓存替换算法 同时跟踪记录LFU和LRU,以及驱逐缓存条目,来获得可用缓存的最佳使用。 MRU(Most Recently Used)最近最常使用算法 最先移除最近最常使用的条目。一个MRU算法擅长处理一个条目越久,越容易被访问的情况。 [详情](https://blog.csdn.net/zkkzpp258/article/details/119699787 "详情") [扩展](https://www.cnblogs.com/linguoguo/p/15883504.html "扩展")
相关推荐
golang 中解析 tag 是怎么实现的?反射原理是什么?(中高级肯定会问,比较难,需要自己多去总结)
使用gorm不当出现too Many Connections的问题
golang map 使用注意的点,是否并发安全?
uint 类型溢出问题
Golang中defer和return执行的先后顺序
golang orm框架 gorm
讲讲 Go 的 select 底层数据结构和一些特性?(难点,没有项目经常可能说不清,面试一般会问你项目中怎么使用select)
golang中两个变量值的4种交换方式
golang进行封包和拆包的完整解决方案
对已经关闭的 chan 进行读写,会怎么样?为什么?
调用函数传入结构体时,应该传值还是指针? (Golang 都是传值)
为 sync.WaitGroup 中Wait函数支持 WaitTimeout 功能.
单例模式的应用场景
Golang判断slice是否相等
Golang空结构体 struct{} 的使用
讲讲 Go 的 defer 底层数据结构和一些特性?
go defer,多个 defer 的顺序,defer 在什么时机会修改返回值?
序列化协议
Golang 单引号,双引号,反引号的区别?
Golang表示枚举类型的详细讲解
昨天那个在for循环里append元素的同事,今天还在么?
什么是死锁?死锁产生的原因?如何避免死锁?
golang并发题目测试
交替打印数字和字母
golang面试题
B+树为什么快
for range 的时候它的地址会发生变化么?
数组和切片的区别 (基本必问)
实现阻塞读且并发安全的map
机器人坐标问题
复利计算 递归/非递归
在 golang 协程和channel配合使用
MySQL索引原理
写出以下逻辑,要求每秒钟调用一次proc并保证程序不退出?
讲讲 Go 的 slice 底层数据结构和一些特性?
高并发下的锁与map的读写
Redis的优点
判断两个给定的字符串排序后是否一致
常见语法题目2
字符串替换问题
ElasticSearch使用场景
常见语法题目1
golang 中 make 和 new 的区别?(基本必问)
七道语法找错题目
判断字符串中字符是否全都不同
golang 实现一个负载均衡案例(随机,轮训)
redis缓存穿透、缓存击穿、缓存雪崩原因+解决方案
基本数据结构和算法
消息队列使用的场景介绍
翻转字符串
redis在项目中的使用
TiDB使用场景
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1