![48c499a11d25e6c746ad3b25b7c17af9.png](https://img-blog.csdnimg.cn/img_convert/48c499a11d25e6c746ad3b25b7c17af9.png)
背景
程序员的任务是写代码【软件】,代码【软件】本身无价值,代码【软件】运行起来才能实现价值。
运行
以java程序为例:
首先把代码通过编译器编译成可执行代码。
运行过程:冯洛伊曼模型
1. 操作系统从磁盘中加载 程序(代码)到内存,程序变成了进程;
2. 操作系统调度cpu给到进程,完成计算任务;
3. 操作系统协调io设备,输出计算结果;
内存模型:
1. 程序代码
2. 程序代码中的数据结构;
3. 数组需要分配内存到堆上;
4. 数据结构对应的内存地址分配到栈上;
程序执行过程:基于栈帧
进程的状态:
1. 运行(获得cpu,正在执行计算)
1. 就绪(差cpu资源)
1. 堵塞(获得cpu也无法完成计算)
因为进程的切换代价太大,操作系统引入了线程。