JavaEE语法第一章、计算机工作原理

简介: JavaEE语法第一章、计算机工作原理

 【计算机科学速成课】[40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili

目录

一、计算机发展史

二、冯诺依曼体系(Von Neumann Architecture)

三、CPU简单介绍

3.1CPU介绍

3.2并行和并发

四、操作系统(Operating System)

4.1操作系统的定位

4.2进程/任务

4.2进程结构体的核心属性(PCB:进程管理快)

4.3CPU 分配 —— 进程调度(Process Scheduling)

4.4内存分配 —— 内存管理(Memory Manage)

4.4.1操作系统对内存资源的分配

4.4.2虚拟地址空间

4.5进程间通信(Inter Process Communication)

4.6线程


一、计算机发展史

计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。

第一代计算机:埃尼阿克,主频5000(每秒计算5000次)

image.gif编辑

人类对计算的需求,驱动我们不断的发明、改善计算机。目前这个时代是“电子计算机”的时代,发展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待大家的努力。


二、冯诺依曼体系(Von Neumann Architecture)

现代的计算机, 大多遵守 冯诺依曼体系结构。

image.gif编辑

计算机最核心的部分:

CPU、内存、硬盘、主板、散热器、电源、机箱、显卡

image.gif编辑

    • CPU 中央处理器: 进行算术运算和逻辑判断.
    • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)
    • 输入设备: 用户给计算机发号施令的设备.
    • 输出设备: 计算机个用户汇报结果的设备.

    针对存储空间

    硬盘 > 内存 >> CPU

    针对数据访问速度

    CPU >> 内存 > 硬盘

    认识计算机的祖师爷 -- 冯诺依曼

    冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日), 美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是布达佩斯大学数学博士,在现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”.

    image.gif编辑


    三、CPU简单介绍

    3.1CPU介绍

    image.gif编辑

    image.gif编辑

    image.gif编辑  

    image.gif编辑

    3.2并行和并发

    image.gif编辑


    四、操作系统(Operating System)

    操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

    4.1操作系统的定位

    image.gif编辑

    操作系统由两个基本功能:

    1) 防止硬件被时空的应用程序滥用;

    2) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

    image.gif编辑

    image.gif编辑

    4.2进程/任务

    每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

    进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

    4.2进程结构体的核心属性(PCB:进程管理快)

    计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/对象来描述这一特征。

    // 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
    class PCB {
    // 进程的唯一标识 —— pid;
    // 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
    // 分配给该资源使用的各个资源
    // 进度调度信息(留待下面讲解)
    }

    image.gif

    这样,每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。

    操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作。

    image.gif编辑

    image.gif编辑

    image.gif编辑

    image.gif编辑

    4.3CPU 分配 —— 进程调度(Process Scheduling)

    概念:操作系统按照某找策略或规则选择进程占用CPU进行运行的过程

    4.4内存分配 —— 内存管理(Memory Manage)

    4.4.1操作系统对内存资源的分配

    操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰。

    image.gif编辑

    4.4.2虚拟地址空间

    image.gif编辑

    image.gif编辑image.gif编辑

    image.gif编辑

    image.gif编辑

    4.5进程间通信(Inter Process Communication)

    如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性

    (Isolation)“。但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。目前,主流操作系统提供的进程通信机制有如下:

    1. 管道

    2. 共享内存

    3. 文件

    4. 网络

    5. 信号量

    6. 信号

    其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

    image.gif编辑

    4.6线程

    image.gif编辑

    目录
    打赏
    0
    0
    0
    0
    10
    分享
    相关文章
    【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
    本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
    125 0
    自动化测试之美:从零构建你的软件质量防线
    【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
    我是一位软件开发者,用通义灵码个人版快速上手新项目
    作为一名软件开发者,我近期体验了通义灵码个人版的@workspace和@terminal功能,用于快速上手新电商项目的代码,并实现了商品详情页的展示优化。通过这些工具,我不仅将熟悉项目的时间缩短了约50%,还提升了代码质量,减少了错误,使开发过程更加高效和规范。
    181 5
    体育应用怎么通过API接口接入数据源与直播源
    本文介绍了体育类应用接入数据源与直播源的API接口方案。主要包括:1) 数据源API接入,涉及选择提供商、接入流程及常见数据类型;2) 直播源接入,涵盖直播源类型、提供商和技术方案;3) 技术实现要点,如数据缓存、实时更新机制和安全性考虑;4) 成本优化建议。附有HLS播放示例及Node.js完整集成代码,帮助开发者高效实现体育应用功能。
    222 21
    Anaconda简介
    【8月更文挑战第7天】Anaconda简介。
    437 3
    基于SpringBoot+Vue+uniapp的新生报道管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
    基于SpringBoot+Vue+uniapp的新生报道管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
    125 0
    ly~
    |
    10月前
    |
    php跟java有什么区别
    PHP 和 Java 是两种常用编程语言,各有特色。PHP 语法简洁灵活,适用于快速开发中小型网站,尤其在 Web 脚本和数据库交互中表现出色。Java 则语法严谨,强类型特性使其在企业级应用、移动开发及大数据处理中更受欢迎,具备高稳定性和安全性。通过优化,PHP 性能可提升,而 Java 在大规模应用中表现更佳。总体而言,PHP 开发效率高但维护性稍差,Java 则更注重代码质量和安全性。
    ly~
    304 5
    消息队列 MQ使用问题之如何使用SockJS和Stomp与RabbitMQ建立连接
    消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
    AI助理
    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问

    你好,我是AI助理

    可以解答问题、推荐解决方案等