思考 - 操作系统
关于线程 / 进程的思考
【分时操作系统】
每个进程都有一个【时间片】
-
先来先服务
-
最短作业调度
-
优先级调度
-
时间片轮转调度
【时间片】怎么分?
内存和CPU不是一个概念
独立的资源和地址空间
进程的资源:
内存资源
文件资源
设备资源
进程控制块:进程标识信息、处理机状态信息、进程调度信息、进程控制信息、、、、进程通信
信号量:保证一个进程访问临界资源
进程通信:
管道,信号,消息队列,共享内存,信号量,套接字
线程 / 进程 ----> CPU / 磁盘存储 ---> 进程通信 ---> 进程调度算法 ---
线程和进程
线程切换之前,要保留当前线程的运行环境;线程切换回来之后继续运行。
那么进程切换呢?
-
【进程优先级】
-
【PCB】进程控制块
-
防止进程非法访问其他进程的内存?
-
进程切换,切换的是什么资源? 进程切换是人为的吗? IO操作会阻塞进程吗?
-
为什么进程切换开销就大呢?进程切换为什么开销就大呢?
-
是不是说,进程切换,要把内存中的数据写回到磁盘中呢?
-
进程切换,是不是说,就是【关闭 / 开启】的切换 ?
-
-
-
为什么会有上下文切换?
-
CPU运行,CPU任务调度问题。
-
CPU是单核的,单核,处理多个任务,就会出现上下文切换。
-
时间分片,
-
获得时间片的任务能执行?
-
资源是有限的,某一时刻,不可能只有一个任务执行
-
任务调度算法
-
调用【内核线程】
-
线程数是无限的,但是线程数越多,上下文切换的越频繁。
-
操作系统是如何创建线程的呢?
-
-
-
为什么会出现上下文切换?
-
什么是单核?为什么这样设计?没有上下文切换不行吗?CPU的算力是不是很强,一个普通的任务,是不是可以在很短的时间内完成计算,那么分片的话,任务的等待时间是不是,就会缩短。
-
-
线程是没有资源的进程
-
进程是资源的总称
-
线程是CPU调度的基本单位,线程和CPU有关
-
一个进程中可以有多个线程
-
线程是CPU调度的基本单位,那么还有进程干嘛?
-
进程是管理这些线程的吗?
-
进程是分配资源的吗?
-
进程和资源,将资源加载到内存中。在内存中进行CPU的调度。
-
进程是不是说指定了【存储位置】呢?
-
而线程是和在内存上的操作有关的。
-
-
-
那么为什么说线程是没有资源的进程呢?
-