在引入线程的操作系统中,资源分配和调度的基本单位是什么?进程还是线程?为什么?

上星期。
我和我的同事讨论过这个问题。

进程是系统中资源分配和调度的基本单位。

每个进程都有独立的代码和数据空间(程序上下文)。

程序之间的切换将是一个巨大的负担。

线程可以被认为是轻量级的进程。

同一类型的线程共享代码和数据空间。

每个线程都有自己独立的运行堆栈和程序计数器(PC)。

线程之间切换的开销很小。

一个操作系统中可以同时运行多个进程(程序)。

多个线程同时执行同一个进程(程序)(通过CPU调度)。

一个主体可以创建和摧毁另一个主体。

多个线程可以在同一个进程中同时执行。

线程本身基本上不占有系统资源。

它只有少量运行所需的资源(例如程序计数器、寄存器组和堆栈)。

线程可以与同一进程的其他线程共享进程拥有的所有资源。

线程是一个进程实体。

它是CPU调度和调度的基本单位。

它是比流程更小的、可以独立运行的基本单元。

进程有独立的地址空间。

一个进程崩溃后,不会影响其他处于保护模式的进程。

线程只是进程内的不同执行路径。

线程有自己的堆栈和局部变量。

但是主题之间没有单独的地址空间。

一个线程的死亡相当于整个进程的死亡。

所以多进程程序比多线程程序更强大。

但是对于一些并发操作,需要同时操作并共享某些变量。

只能使用线程,不能使用进程。

我不确定这部分。
没关系。

在支持多线程的操系统中,假设进程P创建了若干个线程,那么(  )是不能被这些线程共享的。

我在做Java的时候就遇到过这个问题。
想一想,我以前在一家外包公司做一个项目,服务器特别卡。
经过检查,发现是线程池错误。
Threading 就像你家里的几个人一样。
一个人做不到,多几个人就能做,但每个人手边都有工具。
这不像买房子然后必须自己建造墙壁和购买砖块。
你说得对吗?
那时,有一个朋友,一个新朋友。
当他编写代码时,一个线程中的共享变量被更改,但另一个线程没有响应。
结果,整个系统爆炸了。
所以线程之间确实共享资源,但是有些东西,比如计数器、栈,是独立的,不能盲目共享。
否则,就像两个人在没有通知对方的情况下,抢着使用同一个卫生间,肯定会造成混乱。

所以表明线程是唯一且不能共享的选项可能指的是那些正在运行的资源。
你看,当年的项目仅仅因为线程管理不当就延迟了三个月。
你说你的心会痛吗?