1、什么是进程?
关于进程:进程是操作系统进行资源分配的最小单位。其中分配的资源包括CPU、内存空间、磁盘IO等资源。同一个进程里面多个线程是共同使用该进程所分配的资源。
2、什么是线程?
关于线程:线程是CPU调度最小单位。线程拥有所在进程分配全部资源。线程是进程一个实体,它拥有自己的程序计算器、一组寄存器、栈。
3、关于CPU核心数和线程数关系?
核心数:单个芯片集成多个处理器
并行处理:依靠多个处理器同时并行地运行程序是实现超高速计算的一个重要方向,成为并行处理。
多线程:让同一个处理器上的多个线程同步执行并且共享处理器执行资源。
核心数和线程数的关系:核心数和线程数一般来说1:1关系,但是引入超线程技术之后核心数和线程数1:2关系
4、CPU时间片轮转机制?
开发过程中,我们使用线程数量并没有受到核心数限制,那是因为操作系统给CPU提供一种时间片轮转机制,又称为RR调度。
基本原理:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间。
如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
时间片轮转调度中特别需要关注的是时间片的长度。从一个进程切换到另一个进程是需要一定时间的--保存和装入寄存器值及内存映像,更新各种表格和队列等。假如进程切换(process switch) - 有时称为上下文切换(context switch),需要5毫秒,再假设时间片设为20毫秒,则在做完20毫秒有用的工作之后,CPU将花费5毫秒来进行进程切换。CPU时间的20%被浪费在了管理开销上。
为了提高CPU效率,我们可以将时间片设为500毫秒。这时浪费的时间只有1%。但考虑在一个分时系统中,如果有十个交互用户几乎同时按下回车键,将发生什么情况?假设所有其他进程都用足它们的时间片的话,最后一个不幸的进程不得不等待5秒钟才获得运行机会。多数用户无法忍受一条简短命令要5秒钟才能做出响应。同样的问题在一台支持多道程序的个人计算机上也会发生。
总结如下:时间片设的太短,会引起过多的上下文切换,导致CPU效率降低,但是时间片如果设的太长,虽然提高了CPU的效率,但是针对短的交互请求响应速度变差。
5、并行和并发?
并行:同时一起执行的任务个数
并发:单位时间内执行的任务个数,这里给人感觉是同时在执行多个任务,实际上由于 CPU以人感觉不到的速度在不断切换任务在执行。
6、高并发编程好处和注意事项?
好处:
1、充分利用资源
2、加快用户响应的时间
3、代码异步化、模块化、简单化
注意事项:
1、线程之间安全性
2、线程之间死锁
3、线程过多导致服务器资源耗尽死机