锁的实现原理—2,进程、线程是一样的吗?

问题来源
  • 最近,我作法召唤了一下技术博主上线。说是技术博主,也着实是往自己脸上贴金了。哇塞,功力不够,召唤出来一个技术学酥,呵呵,只要我不掉渣,谁都不能说我是学渣。上一篇说到锁,那其实如果没有人去竞争,简单说来如果只有一个进程,一个线程,是不需要锁的,对吧? 既然说到进程、线程,所以,就先说说他们的基础概念。PS:说到线程了,还有个问题也是让我很懵逼,老问我:说说线程池的原理吧? 哇塞,哪儿来那么多的原理,是真的不知道从何说起。然后我就问,您说的这个原理是想让我往哪方面去说?紧接着让我说有什么关键参数啊,运行起来是什么样子的呀。 我都不知道这原来就是原理,想来我面试面不过是我活该,好像我压根儿就没跟上面试官的频道。
  • 就这个问题其实也是有故事的,我当时说出了一句:进程和线程,包括协程从本质上来说是一样的呀。 然后,呵呵呵,就没有然后了。社会的毒打,不是我可以承受的,但再有面试,我不确定我会怎么说。但我仍然坚持,他们是有共同的性质特点的。 支撑我观点的有:操作系统原理,联系具有客观性、普遍性、多样性、条件性。
计算机系统结构
  • 计算机系统,基本分为4个组件:硬件、操作系统、系统程序与应用程序、用户。最简单的就是硬件+软件+数据。如果结合到互联网环境的计算机系统,那再加上网络。从购买计算机(简单就说笔记本吧),需要载入系统启动器,就是最古老的操作系统程序。然后启动这个程序执行init操作,将一台裸机,变成不裸的机。
  • 然后,把程序从归属的角度来看,可以简单分为两个大类:系统程序、用户程序/应用程序。在我理解,操作系统跑起来的是1号进程。操作系统跑起来之后,它就被委托授权去负责一台机器上的所有资源分配,管理载入此机器上的所有物件。PS:但其实,我有个疑问,操作系统明明就是软件范围,那个裸机究竟是怎么把它跑起来的。
操作系统中的进程、线程
  • 进程是操作系统内服务用户请求活动的基本环境。
  • Linux:不区分线程和进程,🙆称之为:task任务。主进程结构不包含进程的整个上下文,而是将其包含在独立的子上下文内。关于进程的文件系统上下文、文件描述表、信号处理表及虚拟内存上下文被保存在独立的数据结构中。在进程的数据结构中,只是简单包含了指向这些结构的指针。因此,只要通过指向合适的同一个子上下文,多个进程可以共享这个子上下文的任何内容。
  • window:严格区分进程和线程。每个进程都有虚拟地址空间和用于初始化进程的信息;每个进程有一个或多个线程,线程为内核的可执行调度单元。每个线程都有自己的状态,包括优先级、CPU使用信息等。
应用程序中的进程、线程
  • 如果从JVM的角度,一个进程中可以有多个线程,多个线程共享进程的堆和方法区/元空间资源。每个线程拥有自己的程序计数器、虚拟机栈、本地方法栈。
  • PS:有一个问题,一个JVM是只能跑一个进程吗?按照Tomcat容器的处理方案,启动一个JVM,可以同时跑多个应用程序,即一个JVM有多个进程。这多个进程在JVM里边到底是怎么隔离的呢?是划分了多个不同的单独空间,有多份的常说的堆栈区域,还是只有一个?我记得以前在Tomcat里搞进程通信,改了一下server.xml的一个配置就好使了。所以应该还是存在共享空间的。 也或者,其实只有一个,然后根据不同载入JVM的资源,标记其是共有的,还是某一个进程私有的。所以,这就又跟文件的命名和作用域有关了吧。哎呀呀。。。。
进程、线程的相同点
  • 都是操作系统中为了达到一定的目标而运行的task。
  • 都具有创建、就绪、运行、阻塞、结束等状态。
  • 均能并发执行。
进程、线程的不同点
  • 一个进程销毁,所属的线程一定会被销毁。但一个线程销毁,进程可以存活。
  • 调度线程比起调度线程消耗大。
  • 在同一时间片,多个进程可以同时执行。但在同一个进程,单位时间片里,只有一个线程会被调度执行?
  • 通信方式有差异。
  • 其他:资源分配方式、进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位等。
几个没论证出来的问题
  • 如果一个进程被阻塞,那么进程所属的线程一定会被阻塞吗?我觉得是会的。但我跟一个朋友说起的时候,他说不会呀。我就在想那为什么进程被销毁,线程就一定会被销毁呢?然后我朋友说了一个现象:比如一个音乐播放器,电脑卡死了,点哪儿都不好使,但这个音乐播放器依然在播放音乐。
  • 如果自己用程序fork一个进程,这个进程的路由绝对路径是啥呀? 好懵。比如说整个user服务吧,在一个JVM中,或者在一个物理机上,我想拥有2个user服务的进程,我是需要配置不同的端口吧。那这个fork,fork复制的是啥?
  • 有木有科班生的大佬给解决一下呀。。。。。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值