Linux和Windows的操作系统基础知识

前言

了解操作系统
操作系统基础知识

一.Linux的背景介绍

Linux 其实就是一个操作系统, 与 Windows 是 “并列” 的关系, 在1991 年,由芬兰人 (Linus Benedict Torvalds)开发出第一个Linux 版本;
与 windows 相比较,Linux 特点:
(1)可以查看源代码;
(2)基于网络;
(3)安全性更高一些;
(4)系统占用的硬件资源更小,留给程序的资源更多;

二. Linux的环境搭建

(1)搭建方式

要想学习 Linux , 首先需要一个 Linux 的环境,环境搭建的方式主要有以下四种,特点如下:
1.使用虚拟机

由于当前的虚拟机软件(如 VMWare )存在一些 bug , 会导致环境出现各种莫名其妙的问题,使用不方便;

2.直接安装在物理机

由于 Linux 桌面使用起来不友好,所以不使用;

3.使用WSL(Windows Subsystem for Linux)

该方式是 Windows 近几年开发的新功能, 在 Windows 系统内集成了一个 Linux ,但是目前这个技术还不够成熟;

4.使用云服务器

该方式比较方便,只需要购买一个云服务器即可(阿里云,腾讯云随便一个),此处使用该方式搭建环境;

(2)系统框架

在这里插入图片描述
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。
内核、shell、文件系统和应用程序、管理文件并使用系统。
1.Linux内核(KERNEL)
内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。

Linux Shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
Linux 文件系统
文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。
Linux 应用程序
标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公套件、Internet工具和数据库等。
Linux的基本思想
1.一切都是文件。(详细来讲就是系统中的所有都归结为一个文件,包括:命令、硬件和软件设备、操作系统、进程等等,对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。)
2.每个软件都有确定的用途。

三.Linux常用命令

1.清屏

 clear

2.查看服务器ip地址

 ip addr

3.查看时间

date

4.目录和文件
文件系统像一棵树,树干是/(根)目录,树枝是子目录,树枝后面还有树枝(子目录中还有子目录),目录的最后是文件。
在这里插入图片描述
目录和文件的路径分为绝对路径和相对路径,绝对路径是从根(/)算起,例如/usr/etc/readme.txt。相对路径是从当前工作目录算起,如果当前工作目录是/usr,etc/readme.txt等同于/usr/etc/readme.txt。此外,需要注意的是:一个圆点.表示当前工作目录;两个圆点…表示当前工作目录的上一级目录。
下面为大家简单介绍Linux系统目录结构,为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。注:FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录(/usr 和 /var)的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。
(1)Linux根目录(/)
FHS 认为,Linux 系统的根目录(/)最为重要,其原因有以下 2 点:

  1. 所有目录都是由根目录衍生出来的;

  2. 根目录与系统的开机、修复、还原密切相关;
    因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件,如下表所示。
    在这里插入图片描述
    (2)Linux /usr 目录
    usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
    Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
    FHS 建议,/usr 目录应具备下表所示的子目录。
    在这里插入图片描述
    (3)Linux /var 目录
    /var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。
    在这里插入图片描述
    5.查看当前目录

     pwd
    

6.改变当前工作目录

 cd 目录名
 (1)进入/tem目录
 cd /tem
 (2)进入上一级目录
 cd ..
 (3)进入用户的主目录
 cd

7.列出目录和文件信息
ls是list的缩写,通过 ls 命令不仅可以查看目录和文件信息,还可以查看目录和文件的权限、大小、主人和组等信息。
在这里插入图片描述
8.创建目录
(1)在当前工作目录下创建aaa目录

 mkdir aaa

(2)在当前工作目录下创建aaa目录,并在aaa目录下创建bbb目录

mkdir aaa/bbb -p

9.删除目录和文件

rm[-rf]目录或文件
选项-r可以删除目录,如果没有-r只能删除文件。
 选项-f表示强制删除,不需要确认

(1)删除aaa目录

rm aaa -r

(2)强制删除当前工作目录下的ccc.c文件

rm -f ccc.c

10.移动目录和文件

mv 旧目录或文件名 新目录或文件名

(1)把当前工作目录中的 book.c 文件重命名为 book1.c

 mv book.c book1.c

(2)如果OPC/test3是一个已经存在的目录,以下命令将把当前工作目录下的 book.c 文件移动到 OPC/test3 目录中。

mv book.c OPC/test3

(3)如果 OPC/test3目录不存在,以下命令将把当前工作目录下的 book.c 文件改名为 OPC/test3。

mv book.c OPC/test3

11、复制目录和文件

cp [-r] 旧目录或文件名 新目录或文件名
 -r 是递归的意思,英文 recursion
选项-r可以复制目录,如果没有选项-r只能复制文件。

示例:
1.把当前工作目录下的book1.c文件复制为book2.c

cp book1.c book2.c

2.把当前工作目录下的aaa目录复制为bbb

cp aaa bbb -r

3.把当前工作目录下的book1.c文件复制为aaa/book1.c

cp book1.c aaa/book1.c
cp book1.c aaa/.
以上两个命令的效果相同。

4.把当前工作目录下的aaa目录复制为/tmp/aaa

cp -r aaa /tmp/aaa
cp -r aaa /tmp/.
以上两个命令的效果相同。

12、判断网络是否连通

 ping -c 包的个数 ip地址或域名

ping用于确定本地主机是否能与另一台主机成功交换数据包,判断网络是否通畅。
13、显示文本文件的内容
显示文本文件的内容有三个命令:cat、more和tail。

1)cat 命令

cat 文件名

cat命令一次显示整个文件的内容。

cat main.cpp

2)more 命令

more 文件名

为了方便阅读,more命令分页显示文件的内容,按空格键显示下一页,按b键显上一页,按q键退出。

3)tail 命令

tail -f 文件名

tail -f用于显示文本文件的最后几行,如果文件的内容有增加,就实时的刷新。对程序员来说,
tail -f极其重要,可以动态显示后台服务程序的日志,用于调试和跟踪程序的运行。
14.统计文本文件的行数、单词数和字节数

wc 文件名

15.搜索文件
1.find

find 目录名 -name 文件名

2.locate

 locate 文件名

16chmod命令
用于改变linux文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。

举例:ls -l example
**17、查看系统磁盘空间

df [-h] [-T]

在这里插入图片描述
参考:Linux

四.Windows常见目录

1、windows常见目录

1.用户
这里存储量用户的设置,包括用户文档、上网浏览信息、配置文件等数据。
2.windows
用来放置 windows 程序的使用数据、设置等文件。强烈不建议改动此文件下的数据,可能会导致windows 系统使用异常。
3.Program Files
应用程序文件夹,一般软件默认都安装在这里,也有系统自带的应用程序。
4.Temp
临时文件目录,存放很多文件,包括使用压缩软件等解压的临时文件。

2、注册表

注册表是 windows 操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows

的启动、硬件驱动程序的装载以及一些 windows应用程序的运行,从而在整个系统中起着核心作
用。通过注册表修改IE 起始页(病毒通常会修改此项键值)
注册表发生改动后,需要注销重新登陆 windows系统,改动后的注册表才生效。

3. 系统启动项

开机的时候系统会在前台或后台运行的程序(开机自启动进程)
在运行栏输入 msconfig

4.、设备管理器

可以使用设备管理器查看和更改设备属性、更新设备驱动程序、配置设备设置和卸载设备。其提

供计算机上所安装硬件的图形视图。所有设备都通过一个称为“ 设备驱动程序 ” 的软件与 windows 通
信使用设备管理器可以安装和更新硬件设备的驱动程序、修改这些设备的硬件设置以及解决问题

5.任务管理器

1.windows 任务管理器提供了有关计算机性能 的信息,并显示了计算机上所运行的程序和
进程的详细信息
2.可以手动结束任务、新建任务
3.在进程栏目,可以看到后台运行的进程
4.在服务栏目,可以看到正在运行的服务 可以通过运行的服务,查到相关运行的后台进程
5.在性能栏目,可以看到详细的 windows 系统资源占用情况
6.联网栏目可以看到目前网卡流量情况
7.用户栏目可以看到当前运行的用户名

6.安全组

1.可以列在用于定义资源和对象权限的任意访 问控制列表中的组;
2.在运行任务栏输入 secpol.msc
3.windows 安全组策略其实是组策略其中关于 安全设置的一部分。里面囊括了账户安全策
略、 windows 防火墙配置等配置目录

7.安全日志

1.windows 用户所有的登陆注销、安全策略更 改都会以安全日志的形式记录;
2.可以通过 windows 安全日志。溯源黑客的入 侵行为;
3.可以通过事件 ID 快速检索日志

8.windows常见目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.批处理

批处理可以自上而下的处理每一条命令
批处理的扩展名为 .bat (创建记事本然后修改后缀即可)
批处理基本语法:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32的bin目录. 2). 打开Linux-0.11目录,双击MinGW32.bat快捷方式,打开控制台. 3). make 一下,生成1.44M的Boot.img软盘镜像,要清除编译结果请"make clean" 4). 如果安装了bochs,直接双击bochsrc.bxrc即可运行Linux-0.11了. 5). 也可用其它虚拟机加载Boot.img后运行,如果出现Kernel panic,请把虚拟机里的硬盘删了 6). 在出现Insert root floppy and press ENTER以后,将rootimage-0.11.img载入虚拟软驱,回车 这就是能在windows环境下编译的Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW. 下面是在Windows下编译Linux 0.11会遇到的问题和对原文件作的修改: 1.赵炯博士已经将汇编程序中引用的C变量(包括嵌入汇编的C变量)的下划线去掉了,但MinGW的gcc可能是为了与其它Windows下的编译器保持兼容,并不能识别这些不带下划线的C变量,因而还得把原先已经在汇编程序中去掉下划线的C变量加上下划线,同时也要把被C程序引用的汇编程序中的变量加上下划线. 2.MinGW中不带as86编译器,因而把boot目录下原先用as86编译的bootsect.s和setup.s两个程序修改成能用nasm编译的程序.并且更名为bootsect.asm和setup.asm. 3.在Makefile作的主要修改: 在LDFLAGS中加了--image-base 0x0000 将elf_i386改成i386pe 将cd 与 make 之间的;改成&,如cd kernel ; make 改成cd kernel & make MinGW中没有sync这个程序,可以把它注释掉,更简单的办法是写一个sync.c,这个sync.c只包含一个空的main函数,编译成sync.exe 因为类似的原因,make dep会出错 4.生成的system文件是PE格式的(PE是Portable Executable的简称),这是windows下的可执行文件的格式,显然是不能直接执行的,必须加以转化.我实现了通过两种方式加以转化. 1)写一个程序Trans.cpp将system.exe里的代码和数据从PE文件里解析出来,生成一个system.bin文件,这个文件是能被setup模块直接加载的.我已经将这个程序放在了Linux-0.11的tools目录下,要微软的编译器编译. 2)自己写一个PE Loader,这种方式比较麻烦,但是想想自己也能做一个PE Loader,还是满有成就感的,尽管这是一个最简单的Loader.代码是加在Linux-0.11-With-PE-Loader\boot目录下的setup.asm文件里,里面有详细的注释. 5.对tools下的build.c作了修改,使其能生成可引导的1.44M的软盘镜像文件Boot.img 6.在Link的过程中,init目录下的main.c会出现以下错误: boot/head.o(.text+0x540c):fake: undefined reference to `_main' init/main.o(.text+0x16f):main.c: undefined reference to `_alloca' init/main.o(.text+0x174):main.c: undefined reference to `__main' make: *** [tools/system.exe] Error 1 第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法其实也很简单,把main.c下面的main函数改名为_main,或者是干脆把它改成另外一个函数,就改成start吧.记得把head.s里的_main也改了. 在最后,要感谢《自己动手写操作系统》的作者于渊,其实我也是先将原先只能在Linux下编译的书里源代码用MinGW移植到Windows下编译的过程中才试着在Windows下编译Linux 0.11源代码的,有了在Windows下编译Linux 0.11源代码的经验,移植高版本的源代码,像0.12,0.95,0.96等等版本应该不会有太大的麻烦了。 也要感谢Linux内核完全注释的作者赵炯博士,是他拉接了操作系统操作系统爱好者的距离. 最后,我也非常想和操作系统爱好者们共同交流心得体会,也希望能多认识一些朋友. 我的网名:flyfish 我的QQ:785606288 E-mail:I2CBus@126.com 另外,要转载请保持本文件的完整性,请尊重别人的劳动果实. 修改日志: 08/3/29 修改了一下Makefile,旧的Makefile在某些文件更新后还会重新编译。 修改了Trans.cpp中的一个dug,该dug在translate MinGW gcc编译的程序时可能会出错。用MinGW gcc 编译的程序的VirtualAddress的形式可能是0xFFC1000这样的形式,其实0x1000才是它的VirtualAddress 08/4/2 修改了下MinGW32.bat,现在已经不用重设路径了。 08/4/4 Trans.cpp还是有错,如果VirtualAddress>0xffff,那么生成的system.bin就错了,bochs调试时会一直重启。 权宜之计,把0xffff再改成0x3ffff,这样VirtualAddress就不能大于0x3ffff,不知谁有更好的解决方法,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值