头脑风暴:分布式、进程、并发

分布式

对于单核来说,计算机运行分为三个部分,内存,磁盘,cpu,当一台机器无法满足需要的时候,就要增加机器来弥补磁盘的不足,多台机器共同完成同一任务.这就是分布式,当然分布式不仅限与这些,还有分布式计算,分布式管理等等,但是使用分布式的目的大致都是是为了性能的扩展,系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力.或者增强可靠性,软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度.在分布式中进程是基本单位.使用某种通讯协议将不同进程调配起来,使它们相互协作,共同处理事务.

进程和线程

从操作系统来看,进程是占有资源的最小单位,除了一些交换区以外,每个进程能访问的内存是相互独立的,每个进程包含很多线程,线程共享进程所分配的内存空间,cpu无法直接操作进程,但是可以操作线程,线程是cpu可操作的最小单位.某一时间点,单核的cpu只能执行一个线程.

并发和并行

并发并非指的是同一时间点,多个进程的同时进行.而是指的同一时间段内,多个进程的交替进行,并发的实质是一个物理cpu在若干道程序之间的多路复用,是对有限物理资源强制行使多用户共享以提高效率.

并行!=并发,并行指两个或者两个以上事件或者活动子在同一时刻发生,并行性可以使多个程序在同一时刻可以在不同的cpu上同时运行.

举个例子:双核的,每个核同时进行操作(可以是不同的操作),这是并行.并发是指,虽然一个核一次只能执行一个任务,只有等这个任务执行完了,其他的任务才能继续执行,但是在短时间内,多个任务都执行完成.

进程线程与并发并行的关系大约像这个样子的:进程比如是一个大房子,整个这个房子的空间,就是进程的内存,这个房子的活物就是进程的线程,房子内的物品,就是进程内的物理资源,比如同时有四个人,每个人进行做不同的4道菜,假如有2个炉子,那么同时做2道菜那么就是并行,但是一个炉子,每次只能做一道菜,其他的菜只能等待,在单位时间内,4道菜都完成了.这是并发.

ps:除了并发和并行,还容易被混淆的概念内存溢出,内存泄露.

内存溢出,内存泄露

内存溢出指程序运行中所申请的内存超过了系统可以分配的内存.内存泄露是指当我们像系统申请了内存之后,使用结束没有释放.内存溢出可能造成程序的崩溃内存泄露不会,但是大量的内存泄露会造成内存溢出.

这点最直观的体现就是在ios开发中,arc模式下和mrc下内存的释放.在mrc手动引用计数下面,我们使用变量的时候,都会有一个计算器,当计数器为0的时候即是这个变量没有被使用的时候,我们就需要手动release,或者使用自动释放池.要不然会一直占用内存.这种未释放的内存,不会引起程序的闪退只会提示一个警告,但是大量的内存没被释放,当程序运行一段时间之后,运行内存很大的时候,就会造成内存溢出,出现闪退.

注:未记录知识点,用户态和内核态的0拷贝,进程的寄存器.

总结知识,查漏补缺,如果错误或者不足欢迎大神指正补充.

欢迎关注个人公众号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值