白话分解入门操作系统到 Java
一、完成一个任务需要什么?
时间 + 资源 + 处理能力
时间就是时间。
资源就是资源。
处理能力就是能够利用时间和资源完成任务的主体。
二、关于操作系统
处理能力就是cpu。
资源就是存储。
时间就是cpu的时间。
cpu的处理能力:很快很快。
cpu需要获取存储资源:这个过程我们称之为IO,IO很快,但是和cpu相比,它很慢,很慢。
所以,
就像一个思想快于嘴巴的人,想要表达的时候,通常都会加上肢体语言,比如手势,身体。
它可以同时处理这许多方面的动作。
三、关于任务
任务在操作系统的世界里,通常对应一个进程,这是cpu处理能力的基本单位。
进程执行期间,需要IO,我们说过IO相对于cpu的处理能力来说,很慢,所以,如果只有一个进程,那么它IO的时候,cpu只能闲着。
闲着就是浪费。
这不符合我们的期望。
所以。
我们有了多进程,多任务同时执行。
这样,一个进程IO的时候,就可以让渡cpu时间给其它的进程,等待IO完成,然后重新等待cpu时间继续执行。
当然,我们也需要知悉,这个同时并不是所谓的同时。
四、关于时间
时间是进程执行的时间。
时间也是cpu输出计算能力的时间。
多进程之间需要让渡时间,那么就需要有个最基本的时间单位。
我们称之为时间碎片。
五、关于进程
不同进程之间相互独立。
各自加载各自的资源。
各自利用分配给自己的cpu时间碎片来执行任务。
我们知道,
一个任务可大可小,有复杂有简单。
按照我们通常思维。
此时,通常会有分治。
是的,进程会对任务进行分解,一个大任务分解成很多的小任务。
而执行这些小任务的基本单位,就是线程。
六、关于线程
线程是计算机世界里最基本的执行单元。
我们说过,进程之间会有时间碎片的调度。
同样,在一个进程内部,同样有不同线程之间的调度。
线程对于进程来说,内部资源共享。
所以线程之间,需求的是协作。
线程,也是系统的线程。
七、关于JAVA
Java是一个跨平台的语言。
所以能跨平台,是因为它有一个统一的运行空间。
自己创造的统一的运行空间,Java虚拟机-JVM。
虚拟机构造了自己的内存模型,
也有线程。
当然,这个线程不同于系统中的线程。
Java程序的任务调度,皆是基于Java的线程调度。
八、关于 Java 线程
JVM内存模型中最基本的两个单元,堆和栈。
堆是共享堆,栈是线程栈。
线程栈也是线程私有栈。
好了,到此为止,入门完毕。
白话分解入门操作系统到 Java的更多相关文章
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)
摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- Spring框架入门之基于Java注解配置bean
Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...
- Groovy轻松入门——通过与Java的比较,迅速掌握Groovy
转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了 ...
- Java小白入门:聊聊Java这门编程语言
一.什么叫做编程 首先我们应该了解一下什么叫做编程. 百度百科词条的解释: 编程是编定程序的简称,是让计算机代我们解决某个问题,是对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终 ...
- 用大白话聊聊JavaSE -- 如何理解Java Bean(一)
首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...
- Java api 入门教程 之 JAVA的IO处理
IO是输入和输出的简称,在实际的使用时,输入和输出是有方向的.就像现实中两个人之间借钱一样,例如A借钱给B,相对于A来说是借出,而相对于B来说则是借入.所以在程序中提到输入和输出时,也需要区分清楚是相 ...
- Java api 入门教程 之 JAVA的文件操作
I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程的一个基本 ...
- Java api 入门教程 之 JAVA的SYSTEM类
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变 ...
- 深入入门正则表达式(java)
一.入门基础 1.元字符 很多人对正则表达式的印象就是乱码..许许多多的符号组合在一起,偶见单词,正则确实是这样的,所以下面我们要看看这些符号都是什么意思 有些符号不是大家看到的字面上的意思:比如“. ...
随机推荐
- virtualapp 应用启动源码分析
应用启动源码分析 在HomeActvity中的OnCreate方法会调用initLaunchpad private void initLaunchpad() { mLauncherView.setHa ...
- queryset高级用法:prefetch_related
这个方法和select_related方法类型,就是访问多个表中的数据的时候,减少查询的次数.这个方法是为了解决一对多和多对多的关系的查询问题.比如要获取标题中带有hello字符串的文章以及它的所有标 ...
- 【LeetCode二叉树#16】二叉(搜索)树的最近公共祖先(递归后序遍历,巩固回溯机制)
二叉树的最近公共祖先 力扣题目链接(opens new window) 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 ...
- 以解析csv数据为例,讨论string、char[]、stream 不同类型来源是否能进行高性能读取解析封装可能性
篇幅较长,所以首先列举结果,也就是我们的目的 核心目的为探索特定场景对不同类型数据进行统一抽象,并达到足够高性能,也就是一份代码实现,对不同类型数据依然高性能 以下为结果,也就是我们的目的: 对1w行 ...
- 学会了MySql高级查询让你在工作中游刃有余
一.单元概述 通过本章的学习能够理解MySQL数据库中分组查询的含义,掌握常用分组函数的使用,掌握GROUP BY子句的使用规则,掌握分组后数据结果的条件过滤,掌握SELECT语句执行过程,理解子查询 ...
- Kubernetes:Pod 端口映射
本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...
- GenAI助力DevOps,塑造软件工程的未来
自 2022 年以来,GenAI 无疑已成为一种普遍的技术趋势.在本文中,我们将探索 DevOps 中令人兴奋的 GenAI 领域,讨论其潜在优势.局限性.新兴趋势和最佳实践,深入了解 AI 支持的 ...
- 简单配置Sql专家云
一.实例配置 1.添加实例 点击全面诊断实例配置,右上角点击添加. 2.填写实例信息 根据下图填写对应的信息,连接测试成功后点击保存. 3.添加完成 4.修改实例 找到对应的实例,点击下图蓝色框修改即 ...
- AutoFill Chrome插件 影响 Vue接口读取,导致页面卡死,caution: request is not finished yet!
今天页面突然卡死了,也不知道是因为什么,直连服务器,能行,自己本机nginx的,系统访问某个特定的api就会卡死. 经过尝试,发现今天测试的AutoFill影响的.
- linux控制显示器的亮度
我使用的manjaro yay -S redshift -b 白天:晚上 要应用的屏幕亮度(在 0.1 和 1.0 之间) -c 文件 从指定的配置文件加载设置 -g R:G:B 要应用的其他伽马校正 ...