IBM大型主机(Mainframe)技术简介之九——系统软件和架构

本文基本上是第一篇的一个扩展

基本概念和术语。注意由于Mainframe是一个相对比较封闭的黑盒,而它确实也通常是黑色的盒子。所以只能对其概念了解个大概,而不可能像其他像Linux这样的技术领域能刨根问底。以下是关于IBM大型机系统的重要基本概念。

1. 跨系统级

MVS——Multiple Virtual Storage,Mainframe上使用的操作系统的本名(例如MVS/SE, MVS/SP等),后期演变到z/OS(IBM商业目的地将其最新的大型机称为Z系统)

LPAR——Logical Partition,逻辑分区,实际上是指通过虚拟手段一组逻辑上独立的资源可以用来运行一个系统,逻辑上可以看成一个独立的计算机。大型机操作系统总是在LPAR模式中运行,即使一台大型机只运行一个OS。LPAR可以运行各种系统,不必是z/OS

SYSPLEX ——(System Complex)多个LPAR,无论是同台机器或多台,可以组成SYSPLEX,用于跨LPAR的通信联络。可以实现最多32个LPAR(系统)的资源共享,并行计算和数据恢复。

说到上述两个多系统连接的概念,会想到另一个:
MRO——((CICS) MultiRegion Operation)多区域操作。这是允许实现多个CICS实例的(每个CICS实例都运行在一个Address Space中)交互,这些CICS可以运行在一个MVS中也可以运行在一个SYSPLEX上的多个系统中。

2. 硬件系统

处理器盒(Processor Box),包括多个处理器,内存(可能物理上位于别的盒子里,但概念上这里放在处理器盒中), 控制电路以及供通道(Channel)连接的接口。通道是用于内存和IO设备通信的通路。通道连接到控制单元(Control Units),一个控制单元含有和特定类型的I/O设备交互的逻辑。

一个设备的地址可以由一个三元组组成:(通道号,控制单元号,设备号码),这个地址可能是不唯一的,如果通道有多个,那可以去最低的一个作为唯一标志,但系统也能以任何一个去访问,这样有利于提高可访问性。

近期系统由于复杂性和对速度的要求提高,有以下主要的变革或改进:

- 系统分成多个Partitions(LPAR)

- ESCON(Enterprise Systom Connection)或FICON(FIber Connection)的采用,基于光纤,并有交换机来归并或共享设备。

- 通道由CHPIDs(Channel Path Identifiers)标识,由2个十六进制数字组成(故最多265个通道)。通道都整合到主处理器盒中。

- 有一个IO子系统层处于系统Partitions和通道之间;最大系统能支持最多4个Logical Channel Subsystems,每个可以支持256个通道;最新系统出了这个层以外还有一个附加层以使得设备到新系统的转移变得方便。

设备的物理I/O地址即CHPID, 交换机端口号,控制单元地址和单元地址的组合被转换成设备号码(Device Number)供操作系统和软件访问这个设备。这个号码通常是两字节,0x0000~0xFFFF,其值是任意的。

(未完待续)

转载于:https://www.cnblogs.com/quanben/archive/2011/11/24/3128873.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Java基于GUI和MySQL的学生管理系统时,可以采用MVC(Model-View-Controller,模型-视图-控制器)的设计模式,将系统分为三个部分:模型、视图和控制器。其中,模型负责数据的存储和管理,视图负责用户界面的呈现,控制器负责处理用户的请求和控制数据的流动。在此基础上,可以实现教师和学生权限不同的功能。 具体实现步骤如下: 1.设计数据库 首先,需要设计一个数据库,存储学生和教师的信息,以及学生选课信息等。可以通过SQL语句创建数据库和表格,例如: ```sql CREATE DATABASE student_db; USE student_db; CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(6), class VARCHAR(20) ); CREATE TABLE teacher ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(6), title VARCHAR(20) ); CREATE TABLE course ( id INT PRIMARY KEY, name VARCHAR(50), teacher_id INT, FOREIGN KEY (teacher_id) REFERENCES teacher(id) ); CREATE TABLE student_course ( student_id INT, course_id INT, FOREIGN KEY (student_id) REFERENCES student(id), FOREIGN KEY (course_id) REFERENCES course(id) ); ``` 2.编写Java代码 在Java代码中,可以通过GUI界面实现教师和学生的不同权限,例如: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MainFrame extends JFrame { private JPanel panel; private JButton btnStudent; private JButton btnTeacher; private JLabel label; public MainFrame() { setTitle("学生管理系统"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel(); panel.setLayout(new GridLayout(3, 1)); btnStudent = new JButton("学生登录"); btnTeacher = new JButton("教师登录"); btnStudent.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 学生登录 StudentFrame studentFrame = new StudentFrame(); studentFrame.setVisible(true); } }); btnTeacher.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 教师登录 TeacherFrame teacherFrame = new TeacherFrame(); teacherFrame.setVisible(true); } }); label = new JLabel("请选择登录类型:", JLabel.CENTER); panel.add(label); panel.add(btnStudent); panel.add(btnTeacher); add(panel); setVisible(true); } } ``` 在上述代码中,通过设置两个按钮,分别对应学生和教师的登录界面,实现了不同用户类型的登录功能。 3.实现教师和学生的不同权限 在控制器部分,可以通过对用户登录进行判断,实现教师和学生的不同权限。例如: ```java import java.sql.*; public class DbUtil { // ... public static boolean login(String username, String password, String type) { // 登录验证 boolean success = false; try { Connection conn = getConnection(); Statement stmt = conn.createStatement(); String sql = ""; if (type.equals("student")) { sql = "SELECT * FROM student WHERE id=" + username + " AND password='" + password + "'"; } else if (type.equals("teacher")) { sql = "SELECT * FROM teacher WHERE id=" + username + " AND password='" + password + "'"; } ResultSet rs = stmt.executeQuery(sql); if (rs.next()) { success = true; } rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return success; } public static ResultSet getStudentInfo(String id) { // 获取学生信息 ResultSet rs = null; try { Connection conn = getConnection(); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM student WHERE id=" + id; rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } public static ResultSet getTeacherInfo(String id) { // 获取教师信息 ResultSet rs = null; try { Connection conn = getConnection(); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM teacher WHERE id=" + id; rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } public static ResultSet getCourseList(String teacherId) { // 获取教师所教课程列表 ResultSet rs = null; try { Connection conn = getConnection(); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM course WHERE teacher_id=" + teacherId; rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } public static ResultSet getStudentCourseList(String studentId) { // 获取学生选课列表 ResultSet rs = null; try { Connection conn = getConnection(); Statement stmt = conn.createStatement(); String sql = "SELECT * FROM student_course WHERE student_id=" + studentId; rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } } ``` 在上述代码中,通过传入不同的用户ID,从数据库中获取不同的信息。例如,对于教师,可以获取其所教课程列表,而对于学生,可以获取其选课列表,从而实现了不同权限的控制。 总之,通过MVC设计模式和数据库的设计,可以实现Java基于GUI和MySQL的学生管理系统中教师和学生权限不同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值