首页 系统工具正文

阿里架构师剖析程序运行原理,程序是如何运行又是如何崩溃的?

访客 系统工具 2020-07-28 11:21:50 14 0 程序又是阿里
进程。堆空间申请一块相应的内存空间,并把这块内存的首地址信息记录在进程的栈中。堆是一块无序的内存空间,任何时候进程需要申请内存,都会从堆空间中分配,分配到的内存地址则记录在栈中。运行:当一个进程在 CPU 上运行时,则称该进程处于运行状态。处于运行状态的进程的数目小于等于 CPU 的数目。就绪:当一个进程获得了除 CPU 以外的一切所需资源,只要得到 CPU 即可运行,则称此进程处于就绪状态,就绪状态有时候也被称为等待运行状态。阻塞:也称为等待或睡眠状态,当一个进程正在等待某一事件发生(例如等待 I/O 完成,等待锁……)而暂时停止运行,这时即使把 CPU 分配给进程也无法运行,故称该进程处于阻塞状态。架构,有时也被称作架构过程视图。需要注意的是,这里有个很多 web 开发者容易忽略的事情,那就是不管你是否有意识,你开发的 web程序都是被多线程执行的,web 开发天然就是多线程开发。线程安全问题,实际上线程的结果应该是依次加一,即最终的结果应该是 +2。临界区,解决线程安全问题的主要方法是使用锁,将临界区的代码加锁,只有获得锁的线程才能执行临界区代码,如下:系统变慢。应用崩溃。分布式系统架构,用更多的服务器构成一个集群,以便共同处理用户的并发请求,保证每台服务器的并发负载不会太高。此外必要时还需要在请求入口处进行限流,减小系统的并发请求数;在应用内进行业务降级,减小线程的资源消耗。
四、总结

事实上,现代 CPU 和操作系统的设计远比这篇文章讲的要复杂得多,但是基础原理大致就是如此。为了让程序能很好地被执行,软件开发的时候要考虑很多情况,为了让软件能更好地发挥效能,需要在部署上进行规划和架构。软件是如何运行的,应该是软件工程师和架构师的常识,在设计开发软件的时候,应该时刻以常识去审视自己的工作,保证软件开发在正确的方向上前进。


推荐阅读

盘点:2020年最新、最全、最实用的Java岗面试真题,已收录GitHub


绝对干货,掌握这27个知识点,轻松拿下80%的技术面试(Java岗)


一线大厂为什么面试必问分布式?


在一次又一次的失败中,我总结了这份万字的《MySQL性能调优笔记》


并发编程详解:十三个工具类,十大设计模式,从理论基础到案例实战


如何高效部署分布式消息队列?这份《RabbitMQ实战》绝对可以帮到你


版权声明

旭日软件园-提供免费小软件下载,电脑教程和QQ表情包下载为主要宗旨.同时有网站运营,
编程教程,网页特效,手机教程,游戏攻略和IT资讯等内容,打造常用软件下载、内容丰富的站长学习!

本文链接:http://www.webmaster5u.com/xtgj/435.html

评论

  • 2020-07-28 11:21:50

    Github高质量Java实战文档推荐:Docker+Nginx+SSM框架(已整理)