首页
学习
活动
专区
工具
TVP
发布

TechBox

专栏作者
86
文章
666295
阅读量
39
订阅数
《现代操作系统》——内存管理
内存管理是操作系统中经典的话题。小型嵌入式系统一次只需要执行一个任务,对内存管理没有要求。现代的操作系统通常要同时执行多个进程,多个进程所占用的内存之和通常超出物理内存的容量大小。即便内存容量也在不断的增长,但始终跟不上软件体积膨胀的速度。甚至有些庞大的程序所需要的内存就足以塞满整个物理内存空间。所以,现代操作系统的设计者就要想办法来调和系统的多任务同时运行、软件体积膨胀和有限的物理内存容量之间的冲突,想尽办法做到鱼和熊掌兼得。这就是本文所介绍的操作系统的内存管理。本文所介绍的主要是:
VV木公子
2021-10-05
7770
《现代操作系统》—— 调度
现代计算机都是多道程序设计系统。在多道程序设计系统中,通常会有多个进程或线程同时竞争同一个CPU。只要有2个或更多的进程处于就绪状态,那么这种情形就发生了:CPU必须要在多个就绪的进程中选择下一个要运行的程序。在操作系统中,完成这个选择工作的程序叫做调度程序(scheduler)。该程序使用的算法叫做调度算法。 许多适用于进程调度的方法同样也适用于线程调度。内核管理线程的时候,调度是按照线程级别进行的,与线程所属的进程没有关联。本文主要讨论同样适用于进程和线程调度的问题。然后介绍线程调度所独有的问题。本文讨论的问题假设机器是单CPU单核。
VV木公子
2021-10-05
1K0
《现代操作系统》—— 死锁
在计算机系统中有很多独占性的资源,在任何一个时刻它们都只能被一个进程使用。比如硬件资源:打印机、扫描仪、光驱。也有一些软件资源:数据库表中的某一个记录、文件系统中某些文件等。两个进程同时使用同一个文件系统中的某个文件会引起文件系统的瘫痪,因此操作系统都具有授权一个进程(临时)拍他的访问某一资源的能力。不然可能会因为两个进程同时请求被占用的资源而导致死锁。 本文中的资源可以是硬件资源、软件资源以及一些数据资源(也属于软件资源),死锁可能出现在软件资源和硬件资源上。 本文只讨论进程死锁,至于线程死锁,其原理基本是一样的。
VV木公子
2021-10-04
7930
《现代操作系统》—— 进程间通信问题
阅读前面的文章,我们已经知道了进程是操作系统对正在运行的程序的抽象。现代操作系统中,进程通常需要和其他进程进行通信。我们称之为进程间通信 问题。又叫做IPC(Inter Process Communication) 问题。IPC主要解决以下3个问题:
VV木公子
2021-10-02
9960
《现代操作系统》—— 线程
在传统操作系统中,每个进程有一个地址空间和一个控制线程。事实上,这几乎就是对进程的定义。不过,经常存在同一个地址空间中并行运行多个控制线程的情况,这些线程就像分离的进程(或者理解为微型进程)。线程和进程的区别是进程有独立的地址空间,而线程没有。一个进程内的地址空间是其内部的所有控制线程所共享的,这也是为什么开发者要了解资源竞争、加锁、解锁、死锁等线程问题的原因之一。本文将对线程进行系统性介绍。主要包括:线程出现的意义(即线程的作用)、经典线程模型、POSIX线程(pthread)、线程的实现。 一些名词:
VV木公子
2021-10-02
7810
《现代操作系统》—— 进程
操作系统中最核心的概念就是进程。进程是对正在运行的程序的抽象。 没有进程的抽象,现代计算将不复存在。操作系统的其他所有内容都是围绕着进程的概念展开的。所以,透彻的理解进程是非常必要的。 进程是操作系统提供的最古老的、最重要的抽象概念之一。即使可以使用的CPU只有一个,但他们也具有支持(伪)并发操作的能力,他们将一个单独的CPU变换成多个虚拟的CPU。
VV木公子
2021-10-02
5490
iOS逆向之Mach-O文件
阅读笔者的其他文章,我们了解了编译过程中的预处理、词法分析、语法分析、编译、链接等步骤。经常和编译型语言打交道的开发者对于可执行文件的编译过程肯定不陌生。我们用 Xcode 构建一个程序的过程中,会把源文件 (.m 和 .h) 文件转换为一个可执行文件。这个可执行文件中包含的字节码将会被 CPU (iOS 设备中的 ARM 处理器或 Mac 上的 Intel 处理器) 执行。
VV木公子
2021-03-07
10.2K0
iOS逆向之签名原理
本篇文章虽然是介绍iOS开发中ipa包的签名原理。但因为签名涉及到密码学中的概念。在了解签名之前,我们需要明确一些概念。密码学中,根据加解密密钥的不同,通常把加密方式分为对称密码(对称加密)和公钥密码(非对称加密)。常见加密算法有:DES、3DES、DESX、AES、RSA、ECC。其中RSA、ECC是非对称加密算法。以下是一些必要的概念。
VV木公子
2021-02-24
8.3K0
iOS逆向之ipa签名原理
本篇文章虽然是介绍iOS开发中ipa包的签名原理。但因为签名涉及到密码学中的概念。在了解签名之前,我们需要明确一些概念。密码学中,根据加解密密钥的不同,通常把加密方式分为对称密码(对称加密)和公钥密码(非对称加密)。常见加密算法有:DES、3DES、DESX、AES、RSA、ECC。其中RSA、ECC是非对称加密算法。以下是一些必要的概念。
VV木公子
2021-02-13
9.7K0
iOS逆向之ARM64汇编基础
我们知道,目前为止Apple的所有iOS设备都采用的是ARM处理器。ARM处理器的特点是体积小、低功耗、低成本、高性能,所以很多手机处理器都基于ARM,ARM在嵌入式系统中也具有广泛的应用。 ARM处理器的指令集对应的就是ARM指令集。armv6|armv7|armv7s|arm64都是ARM处理器的指令集,这些指令集都是向下兼容的,例如arm64指令集兼容armv7,只是使用armv7的时候无法发挥出其性能,无法使用arm64的新特性,从而会导致程序执行效率没那么高。在iPhone5s及其之后的iOS设备指令集都是ARM64。 还有两个我们也很熟悉的指令集:i386和x86_64是Mac处理器的指令集,i386是针对intel通用微处理器32架构的。x86_64是针对x86架构的64位处理器。所以当使用iOS模拟器的时候会遇到i386|x86_64,因为iOS模拟器没有ARM指令集。
VV木公子
2021-01-05
9K0
iOS逆向之app脱壳
iOS端App在上线之前会有苹果商店进行FairPlayDRM数字版权加密保护,我们称之为“加壳”。要对App Store分发的iOS App进行分析,我们需要先对App进行解密,我们称之为“脱壳”,有些人也称为“砸壳”。脱壳之后的二进制文件就是原始的、未加密的二进制文件。
VV木公子
2020-12-22
12K0
iOS逆向之OpenSSH登录iPhone
上篇文章介绍了iOS逆向中常用的一些软件,其中就介绍了OpenSSH可以帮助我们在Mac或windows上以SSH的方式安全登录iPhone设备。
VV木公子
2020-10-19
10.6K0
iOS逆向之必要软件安装
通常,在iOS设备越狱后,需要安装一些必要的插件来增强越狱设备的可操作性。过去iOS设备越狱后大家首先会在cydia上添加pp源(http://apt.25pp.com)。但因为pp助手已停止服务,所以这个源已经不可用,对于一些cydia官方源没有提供的插件,我们需要自己寻找源或者寻找插件安装包。
VV木公子
2020-09-17
9.2K0
iOS逆向之使用unc0ver越狱 iOS13.5
因为工作需要,笔者最近在研究越狱,网上看了很多文章,这篇文章记录了给iOS 13设备越狱的方式和过程,希望对你有帮助。
VV木公子
2020-09-11
12.1K0
iOS逆向之文件系统
作为一名iOS开发者,长期以来和MacOS、iOS系统打交道,对iOS和MacOS系统并不陌生。在开发中,我们也经常访问甚至修改MacOS的某些目录,每个系统目录都有其特殊的功能定位。而iOS系统源自MacOS,在很多方面iOS都和MacOS很相似,笔者借助最近逆向的机会,系统的学习&梳理了下iOS的系统目录及其结构,顺便总结了常见的文件目录的特殊定位。希望本篇文章能够让读者有所收获。
VV木公子
2020-09-08
8.7K0
一份走心的runloop源码分析
对iOS开发者而言,runloop是一个老生常谈的话题,但凡是iOS开发者,在工作中必然直接或间接的接触过runloop。而对于面试者而言,runloop又几乎是必考点。在几年前,笔者写过一篇文章NSRunLoop,对runloop原理以及应用场景做了基本介绍。但是当时也是道听途说,简单的翻看了源码的do...while循环,并没有深入源码。所以,本文将从源码的角度剖析runloop的组成,强化自己对runloop的认识,验证我们脑海中一直以来似懂非懂的原理,真心希望这篇文章能够帮助到大家。
VV木公子
2020-05-26
8K0
一份走心的runloop源码分析
对iOS开发者而言,runloop是一个老生常谈的话题,但凡是iOS开发者,在工作中必然直接或间接的接触过runloop。而对于面试者而言,runloop又几乎是必考点。在几年前,笔者写过一篇文章NSRunLoop,对runloop原理以及应用场景做了基本介绍。但是当时也是道听途说,简单的翻看了源码的do...while循环,并没有深入源码。所以,本文将从源码的角度剖析runloop的组成,强化自己对runloop的认识,验证我们脑海中一直以来似懂非懂的原理,真心希望这篇文章能够帮助到大家。
VV木公子
2020-05-20
8.9K0
详解RN导出Native Module原理
我们知道,RN可以调用Native侧的方法。并且RN框架也给我们提供了这一能力,只要我们按照某些约定在native侧实现一个方法,那么就可以在JS侧顺利调用。如下实现了一个简单的native模块:
VV木公子
2020-04-14
9K0
详解React Native渲染原理
在《一篇文章详解React Native初始化和通信机制》中我们详细的介绍了React Native的初始化和通信机制。如果对通信机制不了的的读者可以先去阅读通信机制。
VV木公子
2020-04-14
10.2K0
一篇文章详解React Native初始化和通信机制
开始准备写这一篇文章的时候,中国的新型冠状病毒肺炎疫情还在继续,累积确诊81058人,现存确诊10827人。这篇文章写完的时候,累计确诊81501人,现存确认5846人。疫情已经持续了3个月,但也终将过去。毫无疑问,在这漫长的3个月的时间里,很多与疫情抗争的工作人员都是非常辛苦的,再次感谢&致敬。
VV木公子
2020-03-24
12.4K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档