2019-07-30

小程有话说 · · 670 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

进程 线程

进程是操作系统提供给我们的一个抽象;我们通过创建进程来使用CPU、读写内存/硬盘、进程IO操作。

每个进程最少会有一个线程,通过线程来执行命令,进程下可以通过创建多个线程来加速执行速度,进程下的线程共享进程的各种资源,包括内存,IO等。

线程共享内存带来了方便,但同时共享导致了竞态资源问题;为了解决这个问题,操作系统提供了 Mutex - Mutual Exclusion 互斥锁,降低性能解决共享带来的问题。

线程 协程

当我们创建线程的时候需要 系统调用,内核会创建一个新的线程,这个线程通过操作系统来进行调度。

协程,又叫做用户态线程,顾名思义,是在用户空间创建的线程,golang取消线程,使用协程来替代。

协程相比线程,优点在于占用内存空间小,可以无限制创建;因为是用户进程自己调度,所以减少了切换带来的性能损耗。

内核 - 任务

我们眼中的进程、线程在内核中,都是以任务存在的。
其包含:

  1. 任务ID
  2. 信号
  3. 任务状态
  4. 进程调度
  5. 关系
  6. 权限
  7. 运行统计
  8. 内存管理
  9. 文件与文件系统
  10. 内核栈

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:小程有话说

查看原文:2019-07-30

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

670 次点击  
加入收藏 微博
上一篇:golang字符转换
下一篇:Go GraphQL 教程
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传