操作系统(Day2.5)

一.为何要有操作系统

  现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。

  程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作,这个繁琐的工作就是操作系统来干的,有了他,程序员就从这些繁琐的工作中解脱了出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。

  一句话来说,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序

二.操作系统的位置

操作系统位于应用软件与计算机硬件之间,本质也是一个软件。操作系统由操作系统的内核(运行于内核,管理硬件资源)以及系统调用(运行于用户态,为应用程序猿写的应用程序提供调用接口),两部分组成。所以,单纯的讲,操作系统是运行于内核态的,是不太准确的

在详细一点就这样说,操作系统应该分成两部分功能:

  1.隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操作硬件的细节,专心开发自己的应用程序即可。

  2.将应用程序对硬件资源的竞态请求变得有序化

三.操作系统的功能

    操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。

  操作系统与普通软件的区别:

    操作系统由硬件保护,不能被用户修改。

    操作系统是一个大型,复杂,长寿的软件。

  操作系统的两大作用:

  作用一:为应用程序提供如何使用硬件资源的抽象

  作用二:管理硬件资源

四.操作系统的发展

1.第一代计算机(1940~1955):真空管和穿孔卡片

特点:没有操作系统的概念

   所以的程序设计都是直接操控硬件

  优点:

 

程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序(有bug可以立刻处理)

 

  缺点:

 

浪费计算机资源,一个时间段内只有一个人用。

2.第二代计算机(1955~1965):晶体管和批处理系统

特点:有了操作系统概念;有了程序设计语言:FORTRAN语言或汇编语言,写到纸上,然后穿孔打成卡片,再讲卡片盒带到输入室,交给操作员,然后喝着咖啡等待输出接口

  优点:

批处理,节省了机时

  缺点:
(1).整个流程需要人参与控制,将磁带搬来搬去(中间俩小人)

(2).计算的过程仍然是顺序计算-》串行

(3).程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)

3.第三代计算机(1965~1980):集成电路芯片和多道程序设计

 

第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术

 

cpu在执行一个任务的过程中,若需要操作硬盘,则发送操作硬盘的指令,指令一旦发出,硬盘上的机械手臂滑动读取数据到内存中,这一段时间,cpu需要等待,时间可能很短,但对于cpu来说已经很长很长,长到可以让cpu做很多其他的任务,如果我们让cpu在这段时间内切换到去做其他的任务,这样cpu不就充分利用了吗。这正是多道技术产生的技术背景

  多道技术:(多道指的是多道/个程序)

  3.1.空间上的复用:内存中进入多个程序(ps:内存必须实现物理级别的隔离)

  3.2.时间上的复用:CPU要切换

  一个程序占用cpu的时间太长

  一个程序遇到了I/O阻塞

4.第四代计算机:(1980~至今):个人计算机

 

转载于:https://www.cnblogs.com/shaojiafeng/p/7156279.html

<think>嗯,用户想用Hive处理北京的12月天气数据。用户还提供了关于数据可视化、气温计算规范、数据分析方法和数据仓库概念的四个引用材料,核心需求应该是怎么用Hive处理天气数据的技术路径。引用[2]对处理思路很关键——它指出日平均气温要按02时、08时、14时、20时四个时次取平均。这意味着如果用户的原始数据是逐小时记录的,需要用Hive筛选特定时点再做聚合。这个国家标准直接决定了核心指标的计算逻辑。其他引用材料更多是背景参考:引用[1]的天气数据可视化可以用于结果展示;引用[3]的专题分析方法论可能用于指导整个分析框架;引用[4]的数据仓库特性则提醒Hive表需要符合集成性(多数据源)、主题性(围绕天气分析)等原则。用户没有提数据来源细节,所以需要考虑两种情况:如果用户已有结构化数据,核心是建表和SQL分析;如果是爬虫获取的外部数据,还需要ETL流程。比如温度单位可能不统一(摄氏/华氏),就需要在Hive中做字段清洗转换。实际构建时,日期分区是重点——按年月日分区能显著提高查询效率。12月的数据用year=2024/month=12/day=*三层分区会很清晰。还要注意空气质量字段的空值处理,比如北京冬季常见的PM2.5数据缺失,可能要用COALESCE()函数处理。性能优化方面,用户可能要比较多年12月的数据趋势。建议物化视图存储月平均气温等常用指标,避免重复扫描全表。如果用户后续要做寒潮分析(比如连续三天降温超5℃),用Hive的窗口函数会很高效。最后联想到几个潜在陷阱:时区问题(北京标准时间UTC+8)、Hive默认时间格式(可能需要from_unixtime转换)、以及气象数据的浮点数精度(DECIMAL(5,1)比FLOAT更可靠)。这些细节在代码示例里做了对应处理。</think> 基于Hive处理北京12月天气数据的核心步骤如下,结合气象规范与Hive特性: ### 一、数据准备与建表 1. **表结构设计** (需符合气象数据主题[^4]) ```sql CREATE EXTERNAL TABLE IF NOT EXISTS beijing_weather ( station_id STRING COMMENT '气象站ID', obs_time TIMESTAMP COMMENT '观测时间(精确到小时)', temperature DECIMAL(5,1) COMMENT '温度()', humidity INT COMMENT '湿度(%)', wind_speed DECIMAL(4,1) COMMENT '风速(m/s)', pm25 INT COMMENT 'PM2.5(μg/m³)' ) PARTITIONED BY (year INT, month INT, day INT) -- 按日分区提升查询效率 STORED AS ORC; ``` > 📌 *说明:使用ORC格式压缩存储,日期分区优化查询速度* ### 二、关键分析操作 1. **计算日平均气温** 依据国家标准[^2],聚合四时次数据: ```sql SELECT day, ROUND(AVG(temperature), 1) AS avg_temperature FROM beijing_weather WHERE year=2023 AND month=12 AND HOUR(obs_time) IN (2,8,14,20) -- 筛选四时次数据 GROUP BY day; ``` 2. **极端天气分析** ```sql -- 单日最高/低温查询 SELECT day, MAX(temperature) AS max_temp, MIN(temperature) AS min_temp FROM beijing_weather WHERE month=12 GROUP BY day ORDER BY max_temp DESC LIMIT 3; -- 最热前三日 ``` 3. **空气质量关联分析** ```sql SELECT day, AVG(temperature) AS avg_temp, AVG(pm25) AS avg_pm25 FROM beijing_weather WHERE month=12 AND pm25 IS NOT NULL GROUP BY day HAVING avg_pm25 > 150; -- 筛选污染日 ``` ### 三、优化技巧 1. **分区剪枝** ```WHERE year=2023 AND month=12``` 直接命中分区,避免全表扫描 2. **矢量化查询** ```SET hive.vectorized.execution.enabled = true;``` 加速数值计算 3. **存储优化** 使用ORC+Zlib压缩,节省70%存储空间 ### 四、可视化衔接 查询结果可导出至可视化系统(如Echarts[^1]),生成: - 温度/PM2.5时序双轴图 - 风速玫瑰图 - 湿度热力图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值